Short answer: because you'll know when you need it. And unless that's the case - there's no good reason to do it.
Long answer:
Because there's really no reason to do it except for when you have unique constraint on that column. It's just a convention. When you have a `CharField`, you expect returned type to be a string and do string operations on it. But then you allow null values and suddenly you get NoneType instead of string. This convention just means that you don't need it, so don't use it.
The only time where you need nullable text columns, is when you need to allow for empty values (or unknown values) in the DB, but also need to have a unique constraint on that column.
Imagine where you have a model that stores phone number in a text field. That field is not required, so it can be empty, but at the same time, if it's provided, it must be unique. That's the only time where you need to set `null=True`, because every `null` has unique, distinct value in DB (empty string does not). So you'll make that column not required, but at the same time, enforce uniqueness. And because you know that this field is optional and may be missing, you'll be explicitly checking for `None` values before you do any string operations on it. But if you don't need phone numbers to be unique, you'll be checking for `None` values explicitly, when simply an empty string will be enough.