Does this make sense to anyone?
Yes :-) Free space inside the guest OS does not mean that blocks are zeroed, then when you do a Storage vMotion the free space (not zeroed) is not released.
Try use the Sdelete (or similar tool) to zero out blocks that may have previously been written with data, but have subsequently been deleted. Take a look here for details: VMware KB: Storage vMotion to thin disk does not reclaim null blocks