I'm not sure if you're implying something malicious but just in case, it is impossible to "steal" a portion of your hashes while mining. If you get different results in hashrate when starting cgminer yourself vs. starting cgminer using CGWatcher, it may be due to the "gpu-threads" default value. CGWatcher uses 2 as a default because the cgminer documentation stated the default value was 2, but in reality when you launch cgminer yourself without specifying the "gpu-threads" setting, it would run with 1. In the latest version of CGWatcher you can disable this so it will not use 2 as the default value if no value is set.
You can go to the Tests tab and locate the Utilities section. In the drop-down list, select "Show last miner start configuration" and click Run. This will show your original config settings vs. what CGWatcher used to launch the miner. In most cases they should be identical, aside from CGWatcher enabling the API if necessary. But if there is a difference there that shouldn't be, it may be something I need to correct. If you email the results to me or post here, I will check for any differences that might affect hashrate.
I haven't really heard of cases where CGWatcher itself caused a drop in hashrate due to requiring more resources (being a graphical user interface), but you can easily test this by closing CGWatcher, launching cgminer and letting it run 5 minutes until hashrate stabilizes, then open CGWatcher. If the hashrate doesn't drop then this is not an issue.