You didn’t show how you’re designating which varyings to capture to which buffers and to which offsets. There are multiple ways to do this. You should post what you’re doing:
Having separate streams of vertex data routed to different feedback buffers is a feature specifically of geometry shaders. However, that’s not just transform feedback; that’s a particular kind of feedback operation which involves multiple streams of output vertices. That specific TF operation requires a GS, but most of TF has no special relationship to using a GS.