The way it seems to work is that UnrealEngine.cpp loads the AudioDeviceModule based on the config value for AudioDeviceModuleName in the [Audio] section of the Engine.ini file. As you pointed out this is CoreAudio for Mac, AndroidAudio for Android, IOSAudio for IOS, ALAudio for HTML5 and Linux, XAudio2 for Windows.
If the module exsits, UEngine::InitializeAudioDeviceManager() in UnrealEngine.cpp then registers the AudioDeviceModule and calls CreateAudioDevice on the AudioDeviceManager which will eventually call CreateAudioDevice on the AudioDeviceModule after a number of checks.
This is all taken straight from UE soucre code. Since I am not familiar with XAudio2 details/implementation the following may not be correct.
But lets look at XAudio2Device.cpp or more specifically FXAudio2Device::InitializeHardware() anyway. There’s one important section which appears to be what you’re looking for, although not exposed. The section starts with #if XAUDIO_SUPPORTS_DEVICE_DETAILS and first retrieves the DeviceCount using IXAudio2::GetDeviceCount which “returns the number of audio output devices available”. Next it retrieves DeviceDetails for “the default device 0” and uses this for “all audio device instances” (it’s a static member of FXAudioDeviceProperties).
I guess instead of defaulting to 0 you could use a loop that has DeviceCount number of iterations and calls GetDeviceDetails with the loop index. Of course this would require you to customize your Engine. And secondly this would only be for the Windows platform. You could probably do the same for the other platforms as well though.
So to summarize and answer your question: no I don’t think it’s directly exposed and I wouldn’t expect it to be an upcoming feature. Although the UE4 Roadmap does have an entry for “Full Audio System rewrite/refactor” added on 24th of April 2015.