Zvol size grows with each zfs send | zfs receive

EDIT: Found a fix for this. You can view the fix and how to enable it by default here
special thanks to user:hege for pointing out where to modify the python code for this.

I’ve had to move around some zvols (a couple of times), and each time I moved the zvol, it grew in size by at least 10GiB. This makes no sense to me. The actual used storage in the ZVOL (for a VM) is about 16GiB. Compression is on, refreservation is off, and an fstrim -a in the vm makes no difference.

Why has the zvol grown when no data was added, and how can I reduce its size to what it should be?

This is literally the same two zvols, just sent from one pool to the other…