What RAID level do you plan to use?
At least for RAID-1 (mirroring) Software raid, because:
1) some el cheapo RAID controllers do not actually handle the recovery gracefully and trash your intact disk with the contents of the broken one. We had a thread about it recently.
2) you hide some harddisk detail in a hardware raid that you might want to know about. E.g. it's probably difficult to get the full SMART status
3) it is hard to verify that the hardware raid properly tells your OS when one disk is failing. If it doesn't inform you properly, the whole thing is useless.
4) you can do raid over drives on different controllers. In an emergency you can even do raid with files living anywhere, from compactflash to network drives to your google mailbox.
5) if you switch controllers you can move your drives. With hardware RAID you have to reformat everything.
6) you can have several different RAID levels on the same drives. For example, I have parts of my harddrives without RAID, parts in RAID-0 and parts in RAID-5.
The performance hit for software RAID-0 and RAID-1 is practically zero, modern CPUs are total overkill for the little stuff these RAID levels need.
For RAID-5 there is a little more CPU overhead but here the problem is that some hardware RAID controllers have dog slow CPUs. In that case it becomes a tradeoff, you unload your own CPU, but your max throughput is less.
Also, for very fast RAID-5 and RAID0+1 arrays you can have a performance limit in your PCI bus which might be hidden inside a controller (ask if you want an explanation).
Personally I drive RAID-5 in software because it is the level where it is most important that OS and RAID system talk to each other properly, which they always do in software RAID.