How to make objects follow an elevated curve yet stand straight?
Vanilla Blender can do it perfectly fine!
I found a bug which we can abuse to get the wanted effect ;)
The setup is incredible simple as well. Just make your curve with your array and curve modifier like normal. Then it obviously is not looking like what we would want, but then notice what happens if you scale the curve object in object mode.
To get the wanted effect, just scale the curve in object mode along the z axis to 100 or 1000 of its height. Then go into edit mode and reduce the height by scaling with 0.01/0.001 respectively. This is the result:

EDIT:
In my first test Tilt needed to always be 0.0, but further testing showed, you sometimes need sligthly different Tilt values, but I'm not sure why. That will solve your deformation issue though.
If you only use flat bezier handles (scaled to 0 on the z axis) a tilt of 0.0 everywhere is perfectly fine.