zfs really gains so much simplicity by simply making snapshots non writable, with linear history, that are children of a dataset.

Compared to the btrfs and bcachefs way of them being mostly indistinguishable from a subvolume it simplifies block freeing, it simplifies snapshot deletion, it simplifies send/receive, it simplifies quotas and disk space accounting. advantages for both avoiding bugs, and performance of snapshot operations

It also simplifies tool creation. snapshots created by one tool are intelligible to another - because they're a distinct concept at the file system level.

picking your abstractions early matters.