Depends a lot on your use case. RAID controllers often mask the drives themselves behind a sort of "virtual JBOD" where they create RAID0 virtual disks for each individual drive. This works just fine, but there is an unknown element here then which is HOW the controller does the writing (and reading) to that virtual disk and that it is not directly under the control of the ZFS software. It might honour the cylinder/head/track write command or it might interpret that command and you have no way of knowing from the software side. It comes down to how much you trust your RAID card.
Similarly, it may also mask things like remapped writes due to failures which means unless you are actively monitoring the controller you might have a number of remapped or even corrupted sectors that ZFS and the operating system don't know about.
Now, if data is corrupted then ZFS absolutely will find that corrupted data during a scrub. For that reason running ZFS on top of a RAID controller is actually a good idea, but not because the RAID controller is better than a straight SAS/SATA connection to the disk but rather because the RAID controller is potentially worse from a data consistency standpoint. There are more unknowns with a RAID controller than there are with direct disk connections from the point of view of ZFS, so my policy has always been that in production I'll run ZFS on directly attached disks only because I want my system to be able to properly deal with disk issues rather than have a scrub suddenly produce dozens or hundreds of errors because the RAID card has been masking the corruption in the underlying disk.
Having said all that, hardware RAID has its place. I like to use hardware RAID for operating system disks because while mirrored OS's are quite good in software, there's still that underlying problem of bootstrapping enough of the OS to fire up the RAID from UEFI (or historically, BIOS). If the RAID card is supported directly in UEFI/BIOS then the operating system doesn't need to care. However, it's still good practice to ensure your hardware RAID has a good monitoring agent available for the operating system or is well supported by the OS so you know when one of the drives has failed.