I know your question is specifically asking about cron jobs, but I think a lot of web-based mmos are written using "completeTime" logic as opposed to lots of crons.
When you start a long-running action, like building a granary that takes 5 hours to complete. The server will just mark the granary's completion time as start time + 5 hours
and store that in the database, that's it. The client will see constant progress if they stay online, but that's only simulated on the client side. If the client logs out and back in before the 5 hours is up, when they connect, the server will tell the client when the granary is expected to be complete, and the client continues the simulation with no further server interaction. If the client logs back in and the granary should have been completed days ago, on connect, the server looks at the date and figures this out and not only completes the granary on the spot, but provides the user with the ability of the granary (let's say +2 food/hour) for all the time the user has been away for with the simple calculation:
foodToAdd = (currentTime - granaryCompletionTime) * 2 food / hour
For other actions that may affect other users (eg: building an army), updates can be executed when the affected parties do something that may require the army to be there. Everything should be able to break down in to rates, and rates can be multiplied by the amount of time that has passed.
I can't think of a case where cron jobs are necessary, other than automated backups. This also effectively removes inactive players from being processed unless they are interacted with.
Battle example:
Start a 3-day training session and you log out
An enemy attacks you, but the army takes 2 hours to arrive (use the same completeTime logic), then the enemy logs out
--- Time passes with no login, Nothing happens on the server
You log in a few days later and a re-calc occurs for your empire (as it does every log in)
The server figures out that you were attacked and brings both your army and the enemy army from their last update time to the battle time, making any necessary adjustments (like for training or whatever)
Resolve conflict
Continue with normal operations and pass on simulation data to client
Notice how the server doesn't do anything about the battle until someone (you) logs in. I'm pretty sure Travian uses a system similar to this, although there's no way to be sure.