It's sometimes a judgement call, though. If an incremental approach is too expensive, haphazard, or just not technically sound, doing a soft launch and gradually transitioning users can work well too. This obviously has it's own drawbacks and complexities but it's a good alternative if an in-place upgrade isn't feasible. That said, at the end of the day an all-or-nothing release really should be the last resort.