Are you using func_movelinear to toss objects by, then resetting them once they get to the end?
Yup.
Perhaps make more background props than necessary, then randomize when they take off so you get a different scenery every time (just make sure there's no clipping problems).
That's pretty much what i did
Perhaps include tunnels which, for about 10 seconds, kill all the outside light and probably take out any fool on the roof.
I also thought about tunnels, but this would result in a shitload of switchable lights all over the train. That's why i'll just add a signal pole, which pushes players off the roof.
Since you're using skybox props, make sure the nodraw parts aren't visible. In that screenshot alone I see two cone-topped cylinders with missing backs.
That's a cheap skybox model, i can't do much about it.