was made with a func_rotate_train.
preach added the ability to assign a model to (i think?) every entity.
unfortunately, he didn't allow for models on entities that have SOLID_BSP (ie: func_train) which is why you can't use a func_train for this.
it's been a year, so i don't really remember the specifics, but essentially, you set up a func_rotate_train + path_rotate entities exactly like you would if you were building a rotating train path, except you don't specify any rotation (but you could, if you wanted to-- the model will rotate just like it would if it was a bmodel).
once your rotating train entity and paths are set up, just set the 'model' key to the path to your custom model. finally, on your func_rotate_train, set the target field to 'null' (or anything that is not used). this is because the entity does not work unless target is set, but since we have the model directly on the train, we don't need to target anything.
you can also tie custom models (via mapobject_custom) to bmodel movers via rotating entity functionality as well. you could, for example, make a lift with torches attached to it. note that you'd need to use mapobject_custom instead of the normal torch entities because torch entities are made into static entities and static entities cannot move and they also automatically emit the fire sound which may not be good since they will be moving around.
as you know, you target a func_rotate_* entity to rotate_object entities in order for those to rotate.
you can also target any other entity in the game (including monsters!) and the rotating entity will also move them as well. for an example of this, check out sm156:
http://celephais.net/board/view_thread.php?id=60375 for a map which uses this behaviour.
there are two boats that drive around with rocketeers stuck inside them with the rotate_train trick so they don't fall out as well as droles attached to a flying airplane type func_rotate_train.
i posted the map source for it in post #10 of the thread (or just get it here:
http://necros.quaddicted.com/temp/sm156_necros_map.zip ).