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).