Here is an idea that is unconventional but might work if you are using ball screws.
The weight of the gantry translates into a back driving torque on the ball screw. This torque is opposing the stepper motion in one direction and assisting it in the other.
You want to counteract this torque in a manner that is independent of gantry position. As ger21 says you can get constant force springs or you could use an air cylinder with a large ballast tank so that displacing the cylinder does not appreciably change the air pressure, this is a form of constant force spring.
However, I am familiar with VMCs that simply support the weight of the head on the Z axis servo. I have several of different sizes and the stationary servo load varies from around 30% up to 65%. These motors like all servos have separate cooling fans so they do not overheat.
So I think it should be possible to mount a servo to the end of the ball screw and just apply sufficient current in the correct direction to it to counteract the back driving torque.
It is possible that the power supply for the servo would need a bit of sophistication because as soon as the stepper started moving the axis that would change the back emf being generated by the servo; the servo would act like a regenerative brake.
An open mind is a virtue...so long as all the common sense has not leaked out.