How is linking based on file and linking based on block "totally different?"
Reflink has its own fs metadata including inode, with (initially) shared extents. Those shared extents can have their blocks individually and independently modified, per file. The point at which there are no more shared blocks, they're not reflinks.
It's not an intrinsic property of file-dedupe vs block-dedupe. It's just how it's conventionally done.
Inodes that happen to share blocks are not the same file. ie totally different.