Thinly provisioned volumes on storage devices continue to grow because the storage device has no idea of which blocks are in use.
For SSDs the TRIM/Discard feature was invented to give free/unused blocks back to the flash device, but this can also be used for Qemu.
Ceph's RBD for example supports trimming so that volumes can shrink again when blocks are no longer in use.
This is supported since Qemu 1.5, but since 1.6 it also works for QCOW2 images.
It however requires the new virtio-scsi to work optimal, so it requires some changes.
For more information see: