I've moved B2G specific device-manager code to a mixin contained in the marionette client (https://bugzilla.mozilla.org/attachment.cgi?id=8339508&action=diff#a/testing/marionette/client/marionette/runner/mixins/b2g.py_sec2) which will check for adb/sut and set up the device manager or retrieve a previously created instance of it. I modified GaiaDevice with an add_device_manager function to accept this new device_manager instance if it will be interacting with a device. An example of that in use is in this PR:
https://github.com/malini/gaia/blob/dc585f36d215d2ddc6753ecbd239d5016278518e/tests/python/gaia-ui-tests/gaiatest/gaia_test.py#L761