In the vagrant-libvirt provider (https://github.com/pradels/vagrant-libvirt) we already do this. When you import a box, we load the full QCOW2 disk image into a storage pool. When you create a VM based on that box, we create a new image that is linked to the original image and only stores changes from it. This makes creating new VMs noticeably faster and more space-efficient in libvirt compared to virtualbox. It would be great if other providers used this technique.