I've always been lead to believe that NULL is not nothing, NULL is NULL. It is a searchable value and is distinctly different from nothing, which can be interpreted as a zero-length string or a zero.
I would have thought, though, that MySQL would have to allocate physical disk space for a NULLable attribute, for the possibility of a potential value. So, for a VARCHAR(255) attribute that is NULLable, it would still have to make room for 255 characters of data.