Probably - though I noticed my cp was more agressive than VMWare's compacter.
The other thing is that cp requires you have enough space to make a copy of the file.
It's possible (but I have not checked) that VMWare or VB could make use of the relatively new linux feature (supported for ext4 and xfs filesystems) to punch holes in files - that is, if the utility determines a block is all zeros, it sends a special IOCTL to request the block be deallocated from the file, which leaves a sparse file.
For any non-unixy person:
A sparse file is simple one where the file has been created with a specific size, but not fully wirteen to. Any unwritten blocks are not allocated. Any attempt to read unallocated blocks returns a bunch of zeros. Simple, yet effective. Allocate-on-write as analogous to Copy-on-write.