Reverting to snapshots is very reliable, though they're time-based rather than true versioning. But, again, you're drawing a false dichotomy between RAID and versioning/snapshots. The best solution, IMO, is to do both.
ZFS is intended to pool storage together, so that, for example, your 3 x 4 TB disks could be very easily combined into a single 12 TB volume. But you then have no redundancy, and when any one of those disks fails, you lose all your data. Even if the data on your server is only backups, you normally don't want that to happen. That's one reason to add redundancy.
The other reason is that ZFS will checksum all your data, and can therefore detect if there's been any data corruption on disk. If there's redundancy present (e.g., a RAIDZ array), ZFS can also repair that corruption on the fly. Without redundancy, you're stuck with corrupt data.