After additional testing, this appears to be an orphaned MobileAsset cleanup issue rather than a normal simulator uninstall problem.
The runtime payload remains on disk under /System/Library/AssetsV2, but in some cases Xcode no longer exposes it in Components/Platforms and simctl does not have a usable reference to remove it cleanly. In other words, the asset still occupies space, but the supported management tools have effectively lost authoritative control over it.
At that point the problem becomes structural: the remaining files are in a SIP-protected system location. So even if the exact asset folder can be identified, it cannot be manually removed through normal user-space means while SIP is enabled. That leaves no supported path to reclaim the space once the asset has fallen out of Xcode/simctl management.
Technically, the remaining workaround is to disable SIP and remove the orphaned asset manually, but that is not a reasonable solution for routine simulator runtime cleanup. SIP exists specifically to prevent modification of protected system locations, and turning it off to recover disk space from a leaked MobileAsset is a security regression and a poor operational workaround.
So the practical conclusion seems to be:
If Xcode or simctl can still see the runtime, removal may work.
If the runtime is no longer visible there but the asset remains under AssetsV2, there is no supported deletion path with SIP enabled.
This looks like an Apple-side bug in runtime asset lifecycle management and cleanup, because the system can retain large orphaned assets in a protected location without providing a supported way to remove them.