Does it make a difference which port the color sensor is connected to, i.e., if it is further away from the port the sound sensor is connected to? Does it make a difference if you add a Wait(MS_500) or something like that in your loop? If you set the color sensor type one time outside the loop and do not call that function inside the loop does it change the behavior? Do you see this trouble with the standard LEGO firmware or the enhanced NBC/NXC firmware or both?
I would be surprised if it is a compiler bug or something like that but it might be a firmware bug or, possibly, a hardware issue where the signal going back and forth between the color sensor and the NXT on S2 is disturbing the AD value coming back on S1.