No. That’s what PlayOneShot is for. You can use a single audio source and play as many clips as you want with it until Unity dies (which should be very, very many, at least outside of the iPhone; I’ve never had it happen). However, every time you play a sound with PlayOneShot, the audio waveforms are added together, which can result in distortion if your clips are loud to begin with, and you haven’t lowered the Audio Source’s volume parameter.
If you plan on having a lot of clips play at the same time, then it will be best to use multiple Audio Sources, and lower their volumes as necessary. However, I wouldn’t use multiple Audio Sources on one Game Object, because as you said, it looks messy. I’d use as many Game Objects as I wanted the limit of sounds to be, use one Audio Source for each, keep track of how many clips were playing, and lower each of their volumes as I wanted. I’d also use Play() instead of PlayOneShot(), because that would make it so that you’d never have more clips playing than audio sources. The old sounds would get immediately cut off, and that’s never good, but if you’ve got a ton of sfx going, a pop probably won’t even be audible.
As it is, You might want to do what I just described, even if you don’t want to get into scripting volume, whose math can get complicated if you want predictable results. For example, if it’s only important to be able to play three sounds at once, but it’s possible that five could happen at once, maybe only use three Audio Sources and use Play() for each of them. This is how synthesizers work - you only get so much “polyphony”; the standard thing to do is to just cut off the earliest notes you played, if they’re still sustaining.
All of this pain-in-the-butt stuff will become unnecessary if Unity ever gets a compressor component, but this is the only way to do it, for now. :x
If your clips are percussive, though, you probably won’t even have a problem. Hopefully that is your case.