If the user chooses to migrate, the most common reason is to separate it from another virtual machine of theirs that is running the same function. Some users will put the load balancer on one hypervisor, the web1 server on another, and the web2 server on a third (Where web1 and web2 are offering the same web front for example). So if the hypervisor that web1 is running on goes down, web2 is still up and serving while web1 gets auto failover to take effect.
Another reason would be de-gradation of server performance due to heavy usage by others on the same public cloud hypervisor. Migration may lead to a less crowded hypervisor. During initial creation of the virtual machine our system does try to balance out users on the available hypervisors but usage changes over time.
Automatic failover: The hypervisors that provide all resources except disk space are servers themselves. Sometimes they fail too, need maintenance, or need upgrades. In any case where the hypervisor does not respond the virtual machines handled by it are given to another hypervisor to run. This is automatic.