This question mainly applies to systems that do not implement dbus, or use ports that don't trigger dbus events, like UART.
When gpsd is started with a list of devices to probe for hardware, and it turns out that none of those devices are present at the time, then it removes those paths from the list and never re-adds them except if you manually re-add them using gpsctl.
It would be nice if it could re-add the original device list automatically when a client connects, if the current device list is empty.