Migrating snapshots just moves the pain of changes : instead of letting the new projection logic replay all past events, you write code to migrate snapshots and hope that it will give the same result as the replay.
In those cases, I would rather do the replay, but do it offline before the release.
Aren't you supposed to take Snapshots every now and then to solve that problem?