This looks like the same thing I ran into, and your "add it in Settings, then remove it" trick is actually the right fix. It isn't caused by a registry key or a policy: Settings shows the language list of your user profile, while Win+Space shows the layouts loaded in your current session. A layout that is loaded but missing from the profile appears in the switcher, but there is nothing to remove in Settings. Adding it makes it a real entry, and removing it then unloads it.
The same trick from PowerShell:
$l = Get-WinUserLanguageList
$l.Add("en-US"); Set-WinUserLanguageList $l -Force # use the tag of your ghost layout
$l.Remove(($l | Where-Object LanguageTag -like 'en-US')); Set-WinUserLanguageList $l -Force
In my case it came back after a couple of weeks, so I wrote a small free, open-source tool that compares the three lists (profile, live session, Preload), shows which layout is the phantom, and does the add-and-remove for you with a backup first (a ready-made EXE, no PowerShell needed): https://github.com/loglux/KeyboardLayoutFixer/releases/latest
Screenshots of what the scan looks like are in the project README: https://github.com/loglux/KeyboardLayoutFixer#readme
I don't know yet what makes it return, so I can't promise a permanent cure; the tool just makes the fix one click.