Rubber banding is what happens whenever the client and server disagree, and the client's correction of its local simulation is noticable to the human using the client. I believe it's correct to say that this particular problem wouldn't happen if you weren't using client-side prediction.
Based on GGPO's home page, it sounds like it also uses client-side prediction and such, but it relies on a peer-to-peer architecture rather than a client-server one. Presumably sending inputs directly to the other player is faster than everyone sending to a server and then waiting on the server to respond. Of course, peer-to-peer only really makes sense with very few players (which is typical in fighting games) and when you aren't worried about cheating (which is why commercial games can't really get away with it).
Disclaimer: I've never made a multiplayer game so most of this is educated guessing.