NULL will only cause problems with programmers who are to lazy to learn how to use it.
Opinions vary. . . But i do agree, that there are more lazy programmers than ever before
Systems that don't allow nulls are very simple ; violate some very basic R.I. rules or have a kind of default row for owner entities :
Again, an opinion not a fact. . . However; if a simple solution provides perfect results, why not
use the simple solution. . .
Knowing how to use a thing does not make it a good thing to use. . .
like you can't hire someone until you know in which department he works, what office he's in or
I've only implemented these kinds of "rules" a few thousand times and never needed to use NULL to accomplish it. . . Indeed, we did this quite nicely for many years before there was a NULL . . .
Long ago i was more of a purist. For the last 25 years or more, my clients have preferred implementations that always worked, were easily maintainable (often by beginners), and were conservative of system resources. . .
One of the biggest problem areas for missed communication/information is with the users who neither need nor relate to dealing with NULLs. And more and more of our users generate their own queries.
As Robert mentioned, there are a few cases when using NULL is best, but i have seen very