I haven't used a Haas before but they are DEFINITELY doing it the wrong way.
An honest mistake, but a very time consuming one.
What I do is use a 1-2-3 block in my vise jaws, then touch the tools off that. It's 1" high so whatever I measure the offset as, I add 1" to the offset. Since the vise stays on the table, I only ever need to redo the offsets if I was to move the vise.
You could do it right off the table as you said, then you don't even need to worry changing the offsets ever.
They can still have Z0 be the surface of the part, they just set up a coordinate system... so if you are touching your tools off the table, and you clamp a 2" part to the table, then they just do a coordinate system with a Z value of 2, so that if they move any of their tools to Z0, it will be at the top of the part.