For someone like me, who has over the years collected an entire treasure trove of applications and utilities for all purposes, sysprep is a godsend. I wont have to re-install and re-configure all my programs when migrating to a new computer. However, having done so 4 times for my last windows installation, the bloat that was being carried over began to accumulate.
Basically what happened is that I have installed and uninstalled hundreds of programs while trying them out, resulting in my winsxs folder ballooning due to the sheer number of obsolete DLLs that are stored. At a point, my winsxs folder alone was over 40GB. While it is fine on HDD, space on SSDs is at a premium. Unfortunately, there is no reliable way to cut that down, the only way is to reinstall the OS.
Anyway, I took the opportunity to start with a fresh windows 8 installation, which unfortunately did not last long. This morning, I once again took to sysprep as I prepared to migrate over to a new hybrid laptop. I ticked "generalise" thinking that it was to generalise the hardware for installation on machine with different hardware. 5 seconds later, I realised that it was to generalise all user preferences. Anyway, not that big of a deal, at least my programs were retained. After cloning the drive and rebooting, to my horror, many programs were missing. Eclipse was gone, dropbox was gone. Perhaps it was god's way of telling me not to sysprep anymore.
After all, my winsxs is now sitting at 12GB, and my new SSD is only 64GB. It was probably wiser to do a reinstall for the long run. I should also probably start testing programs in a VM instead of on my main machine. Microsoft has to do something about winsxs, it shouldn't be that hard to keep track of DLLs that are currently in use and remove them if the only program using it is being uninstalled. The current implementation is just ridiculous, it is just like a vacuum cleaner sucking up all DLLs that it has seen.