(you can also change which domain your bsky profile is identified by, which, I'm not quite sure how that works at a protocol level but it is possible)
Until you lose control of the domain for any number of reasons and then whoever buys it happily continue on as you. A simple credit card processing problem can lose your "identity" at some point in the future.
Also, to emphasize, regular people who don't do those other things don't have to roll a custom domain on bsky (and are unlikely to). But eg. if NPR wants to make a bsky account under @npr.org, that's really quite good verification that it's "the real NPR account", and nobody has to deal with any of the politics around verification which have become a dumpster-fire on twitter since Musk took over
Eh, tbh though, I don't know why I was arguing that point, it really doesn't matter one way or another.
You absolutely identified a very good reason to want to switch instances, and why account portability has value in the Bluesky world.
I wish ActivityPub had a better solve for this, but unfortunately a true federated model makes that awfully difficult (since the entire ecosystem has to update its view of where posts are located).
Similarly, if I'm in a length email exchange with a friend on Gmail, and then I move to another service, there's no way to update my friend's account to "rewrite" those emails to point to the new service. It's a deep limitation in the model itself. The only question is whether the tradeoff is worth it (and, to me, it is).