VMOptimizer optimizes virtual disks by writing out a new virtual disk and it tackles all three kinds of fragmentation that virtual disks can suffer from.
To save space, snapshots are implemented by only recording differences from another virtual disk.
When VMOptimizer encounters a virtual disk that has snapshots, the new optimized virtual disk will be written as an isolated virtual disk that has no dependencies upon the snapshot (and this is a perfectly safe thing to do). It makes little sense to write a new virtual disk that records changes to the snapshot because there would be too many differences and no efficiency savings by doing so. Furthermore, to get the best results, it’s better to keep all the data together in a single virtual disk.
The downside to this approach, of course, is that it will increase the amount of disk space that is used whilst the older snapshots remain. You can make new snapshots based on the new optimized virtual disk and they will take up little space, but the old snapshots will take up space until you remove them.
Bear in mind that if you have really old snapshots and you have made many changes since you took the old snapshot, there will be little space savings anyway because the differences are likely to be large.