Scale a face to always fit the same point in global space in an array modifier
Some of possible solutions are to add one more modifier or to apply exhisting one and to continue working with mesh with changed geometry due to that.

Non-destructive way - adding Boolean

Place the rollercoaster where it should be; create ground plane and position it accordingly (so no flying meshes etc). Don't apply Array modifier; instead add one more to stack - Boolean.

Before:



After:



Note that you should position Boolean modifier after Array modifier, so there to be information for Boolean that rollercoaster is arrayed. 

Note that Boolean is modifier dependent on mesh itself; results of its work depend on topology of your meshes, their complexity etc. 
There are cases when Boolean modifier fails, see related question. That's why it's a good idea to check your meshes for both double vertices and non-manifold geometry. Also check them on Ngons which boolean might not like too. 

Destructive way - apply Array 

You may apply Array modifier and modifications made by it will become real. You can continue edit them in any possible way:


Turn on snapping, set it to Face mode, select bottom face of the rollercoaster's support, and grab it by Z axis;
It's possible to even join meshes, select all and use Mesh > Faces > Intersect function (when selecting all choose Self-Intersect mode of the operator in Last Operator panel or by pressing F6). 

  

Joining faces may be undesirable, of course (you may separate them after cutting though).
you can add a loopcut to support, turn on again snapping and grab it by Z axis to position loopcut accordingly (pretty much the same as grabbing face).