I can access them without issues
That likely depends somewhat on where you are in the world (not everywhere has the same satellite coverage).
The water blocks/distorts the signal, so if the ROV knows “I’m diving, therefore don’t trust new GPS readings” that should be a good way of avoiding those incorrect readings. The lag in lost GPS satellites is likely a timeout thing rather than an actual continued connection, and the lag in position estimate is likely from the EKF doing a good job of filtering garbage to start with (and because it’s already doing IMU positioning between GPS position estimates, so it continues to do that and just ends up not getting another good estimate).
Then on the return to surface I expect it should be fine to just wait for returned GPS lock
There’s a big difference between purely IMU-based position estimation (which quickly gains reasonably significant drift) vs dead-reckoning using velocity measurements from a DVL. Beyond that, Cerulean’s DVL-75 takes in a GPS signal directly. It can maintain some amount of reliability because it acts as a filter to the GPS signal before it gets to the ROV’s flight controller, and also includes functionality to intentionally suppress the GPS signal (e.g. when diving starts) in order to ignore incorrect readings from below the water surface.
At the moment ArduSub accepts whatever GPS signal it’s given, whereas if we made some kind of “Surface GPS” mode/option it could potentially do that kind of filtering/rejection itself