I don't think it is about hardware vs. software. It is about network vs application.
What I mean is that a hardware firewall (in general) only knows about addresses and ports. It has no idea WHAT is doing the talking. So, you can either allow/deny a particular type of traffic, not an application.
Firewalls like ZoneAlarm can go by application, so you can let your browser go out port 80, but that pesky spyware may get stopped. This comes at the cost of having to yes/no everything that uses the network.
They both have their own value. Personally, I don't run a software firewall. I prefer a router. But, for the more paranoid among us, ones like ZoneAlarm may appeal to them.