Why do sparse disks normally grow monotonically?
If your VM uses sparse disks, your .vmdk files conceptually use only as much disk space on the host as the VM uses. However, the VM and the guest OS have different notions of what's "in use".
When an OS deletes a file, traditionally it does not do anything to the contents of the file. The filesystem instead marks whatever space the file used as available. This is what allows undeletion to work if the content hasn't been overwritten yet.
The OS knows that the space formerly used by the deleted file is no longer in being actively used, but the VM doesn't; there's still data there. The VM therefore (usually) can't automatically reclaim the space from deleted files1.
1 If an OS knows that it's using an SSD, when it deletes a file, it can send TRIM commands to the disk to tell the disk that that space is no longer used. I don't know whether VMware products take advantage of that yet, however.
Disk shrinking (general and traditional approach)
There are two phases to shrinking a virtual disk:
- Wiping.
- Compacting (which confusingly sometimes is also referred to as "shrinking").
Wiping fills the guest file system with a zero-filled file to overwrite leftover contents from previously deleted files. This can generate an out-of-space message in the guest, but that's normal and expected. This must be done by a process in the guest. Typically this is done by VMware Tools, but there are other programs that can do this.
Compacting removes the unused (wiped/zeroed) parts of the .vmdk file on the host. Doing this properly depends on the wiping step because that's how it identifies parts that don't need to be preserved. This step requires free disk space on the host because, to avoid data loss on failure, disk compaction will create new disk files. You will need at least as much free space on the host as the size of the largest .vmdk file. (It therefore is advantageous to use split disks, which need much less free space on the host than monolithic disks when shrinking, when defragmenting, or when consolidating snapshots.)
Note that you can't shrink .vmdk files if there are snapshots; the wiping stage will write only to the current delta disk, so there's no way for the compacting step to identify parts of base disks that should be considered unused.
Windows guests with VMware Workstation Pro
Windows guests with VMware Workstation Pro have another, superior option: Clean Up Disks. Power off the VM and choose: VM > Manage > Clean Up Disks. This is much, much faster than using the traditional shrink approach because it directly examines the guest OS filesystem to identify used and unused parts of the disk and therefore does not need the wiping step. Additionally it works if the VM has snapshots. I don't remember offhand if it has the same requirements for free space on the host, but given how much faster it is, any free space requirements it has are likely to be much, much lower.