Probably not a lot of difference for most people, as the only time there are new files created is when a new VM is defined.
Personally I use cache:only as follows. New VM's get set up on the pool, as I want them to be fast. I manually move less used VM's to one of the main array disks, but since I use the same folder structure, they all still appear under the domains share, and since the share is cache:only, mover doesn't try to put them back on the pool like it would if it were cache:prefer. The VM's never know the difference, they can run fine from either location.
If you wanted your newly created VM's to be on the array, then manually move them to the pool if you wanted more performance, then you would set domains to cache:no, and new VM's would be created on the array, and you could manually move the ones that need more speed to the pool.
If you want to move things manually, make sure you never mix /mnt/user paths with /mnt/diskX or /mnt/<poolname> paths. You can easily delete data doing things that look correct. As long as you only move between /mnt/diskX and /mnt/poolname paths you will be fine. Stay out of /mnt/user for manual file moves unless you educate yourself on exactly how the /mnt/user magic happens.