"Push-pull-rebase bottleneck: if you rebase and push and someone beats you to it, you have to pull, rebase, and try again. This gets worse as commit rate increases and people do needless legwork. Facebook has moved to server-side rebasing on push to mostly eliminate this pain point. (This is part of a still-experimental feature in Mercurial, which should hopefully lose its experimental flag soon.)"
What if there are merge conflicts?
I don't know about Mercurial, but in Git there are tons of cases where rebasing cannot happen automatically.
The process is optimistic. You submit your commit and it runs async in the background with success or failure sent to you via email and SMS. You still run into merge conflicts, especially if you are touching a frequently tweaked bit of core, but not having to babysit the process is almost always a win.
What if there are merge conflicts? I don't know about Mercurial, but in Git there are tons of cases where rebasing cannot happen automatically.