To put it simply, player starts don't really spawn players, they are simply markers like map spots. I don't know the whole dynamics of how it all actually works, but if I had to guess, the engine may only be aware of X/Y positions of player starts and not Z (it may map them differently internally than other thing objects, possibly in different structures/arrays).
I may be wrong though - and I haven't actually looked at the code, because if it's anything like I think it is the whole process spans a number of different files and I'm not really in the mood to go digging through it.

To fix the problem though, simply use teleport-Z destinations and move the player to those when they enter/respawn via ACS.