I have a question on a similar topic. I was playing around with the TransformFeedbackSmokeParticles sample. Adding another buffer to store current particle colour was straight forward, but adding another one (5th - particle size (for gl_PointSize)) turned out not to work out. All buffers are stored separately thus using GL_SEPARATE_ATTRIBS.
When using 1, 2, 3 or 4 varyings, everything works, is there a limit I am facing at this point? Even if you name 3 varyings and leave the 4th empty, compiler throws an error, but when adding one extra (3 + two empty) the compiler will not throw an exception, but the end result will not be good.
Gave it a go with a single buffer solution from a particle sphere gpu sample and it worked like a charm. It is a solution, but would still want to understand if there is a limit when using SEPARATE_ATTRIBS.