More concretely, as far as I can tell, the issue is that a fragment program reading both gl_PointCoord and gl_TexCoord[0] will get both translated to reads from GENERIC[0], which is broken unless the GL/GLSL restrict this somehow.