However I have recently found a use for it at runtime (although infrequently).
The application that I work on has an archive process that takes the older data away to a secondary database. Periodically a new archive database is created.
We used to use dynamic sql within a stored procedure to move the data from the live to the archive. Strings were constructed within a stored procedure and executed. This turned out to be too slow.
I replaced the dyamic sql with a set of stored procedures that were regenerated at archive creation time using XSLT. This is exactly the same technique as traditional code generation, but has provided a massive speed increase (3X to 7X improvements have been seen).