I believe it has something to do with the target, which is what you pass the sound constructor. If you change the volume of a sound, all the sounds on the same target as that sound change volume.
sound1 = new Sound(_root);
sound2 = new Sound(_root);
sound1.setVolume(0);
They both will be at 0. What I do, and this may be just a lame workaround, I put different movieclips on stage and name them for different sounds, and use those as the targets.
sound1 = new Sound(sound1mc);
sound2 = new Sound(sound2mc);
I'm not entirely sure why just doing stop would stop all sounds, are you changing the volume elsewhere?