Just to clarify your pointÖ Empty strings are not being set to NULL in any database that conforms to the ANSI standard for SQL. NULLs are not the same as empty strings. Columns given an explicit NULL value or no value are assigned NULL.
Here are a couple of advantages of not using NULLs. You save the space for the bit used to differentiate the NULL value. You also make the meaning of statements, such as "field <> value" more clear. Also, some databases have trouble optimizing statements such as "coalesce(field, '') <> value" to use an index.
Sometimes, NULLs are needed, particularly when you are inserting incomplete records. And, because by default columns allow NULLs, laziness ensures that almost all columns in all databases do accept NULL values.