As far as I can understand, a \hspace #0 gives a markup that is
0pt wide but has a height that is the total height (i.e. the depth + the
height) of the characters in the font. That's the only way I can explain
what happens in your example. However, I'm not sure if that's a good
behaviour for \null in general. Consider for example the difference
between the two boxes in
\markup{\box \column { A \line {a \hspace #0.0 } }
\box \column { A \line {a \null} } }
I think the current implementation of \null behaves more intuitively.
On the other hand, the alignment issues of markups in general are far
from clear.