While the passenger system needs a lot of work to make it more realistic, I'd like to suggest two things to try and help with the worst immersion-breakers. Firstly, at the beginning of a service, a command that makes all the passengers on a platform board the train when the doors are opened, and those passengers already on board stay on board. And secondly, at the end of a service, a command that makes all the passengers get off and none get on. Combined, these would help alleviate passengers departing en masse as a service starts, empty trains at the start of a service, and passengers not getting off at the end of a service. If making these automatic behaviours would be too difficult, a manual command that the player could use. Basically, an "all aboard" and "everybody off" order.
Sometimes, when you reach your last station (where the train terminates and doesn't continue), you'll get an order to "unload passengers". Yet there are still some on the train for some reason. Kinda realistic in one aspect, when I'm at work, I see them stay on the train almost all the time even when its not going anywhere until the morning. But in TSW, they'll stay there for eternity.
Yeah, I notice it aswell sometimes and it needs to be fixed to enhance realism and I do think that having increased AI passenger behaviours would elevate the level of detail and make the game more engaging