The interplay with EIP-1271 signatures is also interesting and something to consider.
In order to avoid an unnecessary cold account access in the (currently) common case, some implementations of EIP-1271 signature validation will first try ecrecover and only then try calling isValidSignature (example here, and pretty sure I’ve seen it elsewhere too). But if you migrate your account to a contract you would want the contract EIP-1271 signatures to take priority, and this code will not do that.
It seems pretty clear that ecrecover should not change though. We can implement contracts so that EIP-1271 signatures take priority (which btw are already revokable so EOA migrations do not add a new attack vector), but existing contracts that either use ecrecover only or EIP-1271 with the pattern I described above will be unaware that an EOA was “decomissioned” via migration.