I am using CSAA on a nVidia card with 16 samples. The fragment shader is being called 16 times as I expected; but glSampleID only varies from 0-3; The fragment shader is called 4 times before the glSampleID changes.
Are you sure the fragment shader is being called 16 times? 16x CSAA produces 16 coverage (depth only) and only 4 color samples (hence the 0-3). Nvidia CSAA
Are you writing to gl_FragDepth in the shader too? This might cause it to be evaluated 16 times for coverage, discarding color for 12 of the fragments. Just guessing, though.