Hi!,
Thanks for the question. Though there are no surface variables in the expressions editor, you can still use the XSplineCoords.z variable because internally the base spline is being conformed to the surface. You can see some solutions and example files that may be of use on
this thread.
Also attached to this post are some examples that use theses techniques with a surface to illustrate how this can be done. In the first example the pillars are scaled using a spline for the top and a surface for the bottom.

In the second example the pillars are scaled between two surfaces. Note that in the top RC object has been rotated by 180 degreed to project onto the surface above.

I hope that helps, please let me know if you have any further questions.
Many thanks,
Paul