Selfdestruct (aka suicide) functions stop contracts from functioning and clean up data on the blockchain. They can be used in upgrading contracts.
Selfdestructing and upgradable contracts using a contract registry allows the execution of potentially arbitrary new code by a contract account owner. This is precisely the type of opaque centralized control Ethereum is designed to remove.
On the other hand, there will be smart contract bugs, even Satoshi made mistakes, Bitcoin is upgraded regularly, human legal contexts change constantly, and the solidity language isn't fully specified yet. So there is a strong case for providing smart contract upgrade paths.