This was figured out after an hour and a half of debugging. Turns out, the ClientSim staiton helper script has a bug that results in broken editor behaviour.
Here's a writeup of what went wrong and my quick fix of the issue - the ideal fix is probably to use a GUID instead, but hey. There's a TODO in the SDK on the line that broke.
This reproduces in 3.8.0 too, as well as earlier versions.
From my postmortem - this was a mysterious crash in AquaFloat, but the bug is not in AquaFloat's code, which is why it sent us on such a wild goose chase.
Postmortem:
The script was crashing in a GetComponent<Floater>() in OnTriggerExit.
GetComponent against an UdonBehaviour works by getting all UdonBehaviour components and matching their internal ID/name/signature (due to it not being a real type at runtime - standard U# behaviour)
This was triggering when an object with a VRC Station left its bounding box. The reason why this broke is due to a ClientSim fumble.
On game start, if in the editor, ClientSim attaches an UdonBehaviour, and tries to attach a default station behaviour to that.
The problem is, the way it does that is it looks for a given .asset under the Assets dir (specifically vrc example stuff) - but VRC no longer places those assets there (or some other script was removing it). This caused an empty UdonBehavior component to be added without an associated Udon VM instance.
When the GetComponent lookup ran, it tried to hit the VM instance to get public vars, in order to get the signature. The VM instance was null as a result of this failed load, which caused GetComponent to fail, which crashed the calling script.
My quick fix (quick after 1.5 hours lol) was to modify the ClientSim station helper and fix up the path. Hilariously, there's actually a TODO comment talking about finding the asset file "properly".