Software RAID is a driver of the operating system or third party (in the case of Windows) which uses the host computer system (CPU+RAM+SATA controller) to construct a RAID array from multiple physical disks.
Hardware RAID is a "SCSI controller" that internally uses RAID and simulates a single volume via the SCSI/storport interface. Hardware RAID is physical; meaning you can touch the add-on RAID controller while you cannot touch a software RAID driver. The add-on controller will perform RAID while the operating system thinks its working on a single big disk; unaware of the multiple physical disks connected to the hardware RAID.
When using hardware RAID, your operating system does not know it has multiple disks. With software RAID, your operating system system sees the physical disks, and uses an internal driver to create a single volume out of multiple devices using the RAID driver. The RAID driver communicates directly with the harddrives, hides the physical drives from the rest of the software, and creates a new virtual storage device to be used for storage.
software you can't touch; hardware you can
software can't break permanently; hardware can
software depends on the operating system used, and is usually specific for the operating system; a windows RAID driver does not work on Linux or Mac.
hardware is more OS-independent. It still needs a driver to work, but it'll be a mini-driver that only acts as communication/bridge between software and the Hardware RAID controller add-on card.
hardware traditionally has optimized firmware to accelerate random I/O patterns often found in servers. Most software RAID drivers are very simple and utilize few optimizations.
software RAID allows more performance potential than hardware RAID; lower latency due to disks being directly connected, the ability to utilize dynamic stripesizes (impossible with hardware RAID) and the use of a faster CPU for the more computation-heavy RAID4/5/6 schemes.
most software RAIDs consist of 'onboard RAID' drivers that do all the work; while people often think the onboard RAID controller does something special/different than a normal SATA controller; they are wrong. The driver does everything 'special'. The only thing the hardware support does, is allow booting and creating the RAID array.
In short, Windows RAID drivers often suck; their RAID0/1/0+1 performance may be okay, but their RAID5 support is often unreliable, low-performance and simply dangerous to use. Especially since people think they are safe with RAID5; while its actually a pretty dangerous RAID level for a lot of people.
Advanced (software) RAID drivers can be found on OpenSolaris and FreeBSD operating systems; the ZFS filesystem is the most advanced filesystem to date with internal RAID engine that utilizes dynamic stripesizes. Its also able to enhance reliability significantly, in ways impossible with traditional hardware RAID.
The following 'classes' of RAID can be distinguished:
True Hardware RAID (PCI-express add-on card with dedicated CPU+RAM)
Hardware-assisted RAID (Highpoint RR2400 series; real hardware RAID for RAID0/1 but software-assisted for parity RAID5).
Onboard/Hybrid/Fake RAID (found on motherboards and cheap PCI/PCI-e controllers - uses software RAID drivers - acts as normal SATA controller otherwise)
Software RAID (nothing you can 'touch' - uses any normal SATA disk/controller - able to mix HDDs connected to different controllers)
There's an advantage to software RAID where you can have multiple different types of RAID array across the same set of disks. I had an 8x1TB raid set divided into a small raid-0 and a large raid-10.
I asked my boss once what he thought of creating several hardware Raid-1 volumes, possibly across different controllers, and combining those into a software raid-0, to have a raid-10 on a system using hardware that didn't have raid-10 support in hardware. He seemed to think that would be a really fast solution.
sub mesa covered it but it may not have been obvious enough: With hardware raid, your raid controller is a potential point of failure, and you run the risk of not being able to find a compatible replacement. It's not a very likely point of failure, but it could happen, especially if you have wires trailing out the back of that card and into other rackmount devices. The problem is by the time that card fails, you may not be able to get another one, and modern replacements might not read the array.
With software raid, you can always easily replace your failed "raid controller" because it's just a reinstall of the software.
Areca hardware RAID can have different RAID-levels on a single disk. Thus with 4 disks you can make a RAID0 part and a RAID5 part, for example. So its not a feature entirely exclusive to software RAID.
And yes a hardware RAID controller can fail/break, leaving you with a non-functional array until you can replace the RAID controller with a brand new one of the same make and type. But, software can fail too. Just look around how many people have onboard RAID and have a 'broken array' - after something happened the software RAID driver does not want to continue using the disks and often splits it into two arrays.
While recovery is possible in this stage; it leaves the user/administrator with a broken array. If he/she uses the wrong procedure to correct this, total dataloss may occur by rebuilding with the wrong parameters.
So i would say both software RAID and hardware RAID can fail, albeit in different ways. Software RAID does have the advantage of not relying on any specific hardware; you can replace all hardware, even with a different type, and software RAID should still allow you access to your data.