Rebooting and brackets didn't help, but I have more information on what is happening.
If you use a soldier, it gets setposed to ground level
If you use an empty vehicle, it gets setposed to the same x-z position, but -106 on the y, which I presume to be sea level.
This explains why interposing a marker didn't help - they must be at sea level too.
It looks as if the _pos returned by onMapSingleClick is essentially at sea level, but there is a hardcoded fix for soldiers. Does that make sense?
(aside - I don't know much about the format command either ;D This works
_far = bob distance Tank1C
_position = position bob
titletext [format ["bob distance %1\nposition %2",_far,_position],"plain",1]
but I couldn't figure out how to make it a hint.
)