It's been a while since I've looked at the protocol but I believe it's because other network members have to verify your transaction, so you have to pay for that compute time otherwise you could flood/ddos the network with fake transactions
Fees are there to prevent micro-transaction spam. If there were no fees, anyone could flood the network with very small transactions and it would suck.
For big transactions like this one, involving old coins, no fee is needed and miners will accept it immediately.
Hopefully someone can expand on this answer but broadly it's so that there's an incentive for transactions to be recorded. (And apparently transaction fees can be adjusted up and down, across the entire system, to ensure this happens.)