I've used XBConnect and Kai Xlink and Xlink is MUCH better. Unfortunately they are on separate networks so XBConnect may have a better selection of games going. on Xlink it is almost all Halo 2 games except for a few new games that are popular at times, but XBC may be the same way. But I found Xlink to work way better, plus the more recent versions of XBC are a PITA. Xlink normally required no port forwarding and triggering and it just works way better. I'd keep XBC as a backup in case the on-going selection of games in Xlink doesn't have what you want to play. I've never used Gamespy tunnel.
edit: Then again, this was about a year ago, so maybe people realized what a piece of crap XBC is and there is a lot more games and players on Xlink.