When using zfs, you want to avoid storing things like huge disk images in your regular filesystems because they don’t play too well with copy on write.
For this purpose, zfs provides volumes (zvol), which are created as easily as this:
zfs create -V40G storage/myimage

The new image is available as a raw device in /dev/zvol/storage/myimage.
To use the image with VirtualBox, make sure to set the permissions accordingly:
chgrp vboxusers /dev/zvol/storage/myimage && chmod 770 /dev/zvol/storage/myimage
To set the permissions automatically, consider creating a udev rule.

To have VirtualBox use zvols, you can register raw devices as disk images:
VBoxManage internalcommands createrawvmdk -filename $HOME/VirtualBox\ VMs/myimage.vmdk -rawdisk /dev/zvol/storage/myimage

Now you can just register the newly created myimage.vmdk as hard drive for a virtual machine.