Any change in system audio can cause this issue due to a bug in SE's Audio implementation. These things can cause this issue:

1.) Removal or Addition of a sound device.
2.) Changing the default Audio Device.
3.) Driver Crash / Driver reload.
4.) Unplugging USB Headset.

Now for the programming side of it:

They are using XAudio for their backend and not properly handing IXAudio2EngineCallback::OnCriticalError() since they are specifying the default audio device with parameter szDeviceId of IXAudio2::CreateMasteringVoice.

from Microsoft's msdn:
If you provide the ID of a specific device in the szDeviceId parameter to IXAudio2::CreateMasteringVoice or use the XAUDIO2_NO_VIRTUAL_AUDIO_CLIENT flag, then a critical error will occur and OnCriticalError is raised if the underlying WASAPI rendering device becomes unavailable. This can occur when a headset or speaker is unplugged or when a USB audio device is removed, for example. Once a critical error has occurred, audio processing stops and all further calls to XAudio2 fail. The only way to recover in this situation is to release the XAudio2 instance and create a new one.

If you specified NULL or szDeviceId parameter to IXAudio2::CreateMasteringVoice, then the system uses a Virtual Audio Client to represent the audio endpoint. In this case, if the underlying WASAPI rendering device becomes unavailable, the system automatically selects a new audio rendering device for rendering, audio processing continues, and OnCriticalError is not raised.
SE could literally fix this with three lines of code.