This behavior is a result of registering for the FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED callback, which overrides the default behavior.
The value returned from System::getDriver is only updated when calling System::setDriver and by overriding the FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED callback, FMOD no longer does this automatically, you will need to handle this in your callback.