Because it can't make a backup afterwards.
You see, it refreshes the catalog first, in a new Catalog object. It then doesn't know if there are entities changed. Then it has to migrate all entities, typedlists etc. This is done in-place, not in a copy of the project. So after that work, it knows if there were changes or not. So to know if a backup has to be created, it first has to determine if there will be changes, and it therefore first has to do the migration.
So the only place to do a backup is before the migration, which it does.