It looks like this is a SQLite oddity. According to a Laracast forum thread about the same issue:
When adding a table from scratch, you can specify NOT NULL. However, you can’t do this when adding a column. SQLite’s specification says you have to have a default for this, which is a poor choice.
Looking further to the SQLite ALTER TABLE docs, I found:
If a NOT NULL constraint is specified, then the column must have a default value other than NULL.
I suppose in the world of SQLite, not providing a default value is the same thing as saying the default value should be NULL (as opposed to meaning there is no default value for this non-nullable column, so a value must be provided for it on each insert).
It seems SQLite simply leaves you in a bad state if you need to add a non-nullable column to an existing table, which column should also not have a default value.