The only time we use shrinking is when we are shipping databases around (by shipping, I mean moving databases to teams in different geographic locations, or even within the network). Other than that, we never use shrinking.
I would agree on making shrinking harder simply because without the knowledge and skill on when & how to use shrinking, it does more bad than good (as you rightly put it, an angel might loose some feathers).
I would propose that shrinking be made possible if the following is true:
1. A trace flag is enabled AND
2. Database is in a single-user mode
Thanks & Regards,
Nakul Vachhrajani.
http://nakulvachhrajani.com
Follow me on
Twitter: @sqltwins