One of the advantages of ZFS style snapshotting is it is a constant time
operation that is far more efficient than walking a directory tree and
creating thousands of new inodes. It doesn't work for making a (writable)
snapshot of a snapshot, however, and that is a very important use case for
virtualization, for example.
Copy-on-write filesystems could use a good interface (like this one) to make
efficient *copies* of files in the same (extended) filesystem. That is
something that ZFS and BTRFS both appear to lack, and which for portability
reasons is easy to downgrade to an ordinary file copy.