I would have expected that as well but found in general the process to be pretty seamless.
I should probably mention I just stumbled on to this approach rather than having forged it through clever thinking -- it was originally due to a faulty motherboard burning out internal HDDs consitently. So I HAD to opt for an external drive and once I did the going back made little sense as it just imposed restrictions I didn't want anymore.
Between Macs with macOS, this usually works fine (except with older hardware that is not supported by the OS on the external drive). Can't say for Windows.
This might be the case for Windows, but with Linux, most drivers are already distributed with the kernel and can be dynamically loaded and unloaded depending on what hardware is discovered while booting or afterwards.
I would have assume that this would not work unless the hardware was the same - due to device drivers, etc.