You know what I think might be happening? (I can't verify this until I get home). There was a change made not so long ago where I changed the way I disconnected signals because people were having issues (with the config dialog hanging on and getting disposed while still connected). I suspect what is happening is that the signals are being disconnected not only from the config widget dialog but also from the plugin's main action as well? So in other words, just going into the config widget and closing it will be sufficient that your device will no longer be seen. That would kind of match the behaviour you are seeing...
Which would then beg the question of the "right" way to disconnect a signal. because it would appear that calling this in the config widget isn't it due to it disconnecting everything...
Code:
device_signals.device_connection_changed.disconnect()
device_signals.device_metadata_available.disconnect()