Here's a wild guess, shooting from the hip...
This has nothing to do with SSBO. It looks from your mention of glUseProgramStages that you're using SSO. In that case, you're required to declare gl_PerVertex for all built-ins that you're using. You have done that in the vertex shader, but have not done so in the fragment shader. Therefore, the interfaces don't match. The fragment shader compiles and links fine because you don't actually use any of the built-in inputs. However, the "textureCoordinate" user-defined input is automatically assigned in input slot, which then conflicts with part of the gl_PerVertex block defined in the vertex shader. That explains the message about "textureCoordinates" not matching between vertex and fragment shader, and also explains why the sample works when you use gl_FragCoord.
Try declaring gl_PerVertex as an input to the fragment shader. Also, remove the gl_PointSize and gl_ClipDistance[] declarations from gl_PerVertex if you're not using them as it will be harmful to performance.
Cheers,
Graham