SSH can't send out a packet for every keystroke as soon as it gets it-- otherwise it's susceptible to timing attacks based on minute variations in speed of hitting different combinations of letters on the keyboard.
For a full desktop session, X11 over TCP should be much faster just because each X11 client app has it's own TCP connection, whereas for SSH X11 forwarding every app is tunneled over a single TCP connection.
But even with a single X11 connection, the difference in performance is huge between it being tunneled through SSH and not.
Also, whether you have one connection or multiple between 2 hosts, it's still the same bandwidth for the most part.