I assert that the migration would already have happened (and seamlessly) if we had just extended the address space and left everything else the way it was.
That "solution" would have still presented as "ships in the night" and uptake would have been resisted for all the reasons that uptake of IPv6 has been resisted: no forward or backward compatibility. The fixed address size in IPv4 is the cause of the compatibility problems, but it's very badly exacerbated by the ubiquity of network address translators.
At some point, the fixed address size in IPv6 may turn out to cause similar related problems, but we should be in a better position to avoid them as long as we don't succumb to the siren call of adding back network address translation on IPv6.