Generally, hardware firewalls are better because of several reasons.
1) They take up none of your PC's resources.
2) They sit out in front, as a gate, BEFORE your PC, not on your PC.
3) They are very very unlikely to have exploits or holes.
4) They usually have much more comprehensive protections.
5) They can't be "Taken down" by trojans/worms or other things to expose your PC.
6) They don't conflict with anything.
Software firewalls real benefit is with their application control of outbound sockets. But even still, you can get that same protection for no overhead using something like System Safety Monitor.
A really really good firewall, like a SMC Barricade, can be found in the $20-40 range usually, and in my opinion, are totally worth it.