I have the internal sound device and a USB headset and depending on the situation I could want to use either, but I've found no good solutions. I'd like a cross-platform solution, but I'm on linux for most of my use cases. I can configure some apps (VLC) to use one or the other, and I can set preferences in KDE, but not everything listens and most notably Flash seems to just grab whatever it can.
You need to use a sound server like PulseAudio, which serves as a proxy for your sound applications.
Older versions of some applications did not work well with PulseAudio when using the ALSA protocol, so if you do stumble across this issue, you'll need to find a patch for the pulse plugin in ALSA.
Here's a diagram showing a birds-eye view of where PulseAudio sits, and how it works:
To be brutally honest, you might run up against problems trying to configure PulseAudio, so be prepared. Things are a lot better than they used to be, but not as good as they ought to be. It might be a good idea to track the changes you make in case you need to revert them later. You'd also be advised to have a look at this article and other articles on the confusing mess that is the linux audio subsystem before you start.