Another possible approach for the Y-size property of the Spacer is an expression like
rest>3cm?0cm:rest
where 3cm is the Y-size property of the Trailer (Footer) element. (and this trailer element also has Y=max, AnchorY=1)
What this is doing is saying the Trailer element needs 3cm to draw at the bottom of the page. Just before it is drawn, check how much space is left (the value of rest). If there is enough room (rest>3cm), then we don't need to draw anything (Spacer's Y-size=0cm), if there isn't enough room (ie rest <=3cm), then draw spacer so it takes up rest of page (Spacer's Y-size=rest), and thus the spacer takes up rest of page, and trailer is drawn on the next page.
I've used 3cm, you could use length("M")*no_of_lines, although I'm wary of using length,width too much because of the "If it uses the same font"disclaimer. (Its not just font-name that has to be the same but ALL the font characteristics).
An interesting issue with these last page footers is how to avoid orphan footers. By that I mean a footer with no detail on the same page. So rather than rendering the last few rows of detail on the second to last page, render them at the top of the last page. I think the rest approach handles that if you move the spacer up into the OnEveryRow, and adjust the constant used in the rest comparison e.g. rest>4cm?0cm:rest (but keep the size of the trailer the same 3cm). Not sure if that will work in conjunction with a table.
Reuben