Pruning should arrive in Bitcoin Core 0.11, allowing people to run a full node with only 1 GB of storage space.
Please answer this simple question: "how does one bootstrap a full node once everybody's pruning?".
Suppose every node prunes a 99% of the blockchain, and keeps a random 1% of the blocks.
A new node bootstraps by contacting 100 random nodes.
More formally constructed the optimal balance is a hybrid DHT. All nodes contain full blockheaders. This makes attempting to rewrite history impossible. The headers are too important to store in a DHT but the transactions can be. All nodes don't need all the copies of SPENT transactions just full headers and the UTXO set. Of course users also have a vested interest in ensuring a copy of their txns remains so they would probably store that locally.
Future bitcoin node could only hold the following
Full blockheaders (~4MB per year)
Full blocks for the most recent x blocks (can improve efficiency in the event of reorg)
Current UTXO set
Users own transaction history
Some user defined portion of the full transaction set (could be 0% to 100%)
This presents a drastic improvement in the bitcoin network cost and decentralization if: