0 - это не вариант пустого поля, если вы храните количество чего-либо. Также и с пустой строкой - это не всегда эквивалент NULL. Нулл это вообще даже не пустое, а "неизвестное" значение - важно понимать разницу.
Как по мне, нет более извращенного способа поставить себе грабли, как экономить место в БД используя/не используя NULL. Это должно целиком определяться предметной областью. Не думаю, что какая-либо СУБД настолько ужасна, что будет тратить на nullable значения в два раза больше места.