Turns out there was a bug in snapd’s WSL recognition that meant it only detected WSL 1 until that was recently fixed (details here).
In the meantime, apart from the workaround above, the fix is out in the beta channel, so you can use the quick disable-interop-once hack at that link and then snap install snapd --beta
/ snap refresh snapd --beta
(delete as applicable) to get the fixed version.