When creating or joining a game, there is an option for setting the game speed. I think a good play experience for all players involved requires that every player adhere to this speed setting.
On the odd occasion a player may experience technical difficulties (e.g. Internet connection issues, computer crash) or real-life situations which may contribute to exceeding the allotted time. These issues are out of any player's control, so I would be more understanding. In these cases, it's best for the player to inform other players of the reason. Even so, if a player disconnects or is unresponsive for an extended period of time, I would probably still expel them. It's not necessarily anything against that player; just that I don't want to be stuck in a game that's not moving.
If a player consistently exceeds the time limit as you describe just from deciding moves, I think expelling that player is quite appropriate. I would give the player a warning before expelling them. That player should play games where the speed setting is set to be slower/no time limit, or communicate to the other players before the game starts to see if they are okay with players exceeding the time limit. I think a slow player joining a fast game is poor etiquette.