From the Bitcoin.it wiki:
Transaction fees are voluntary on the part of the person making the
bitcoin transaction, as the person attempting to make a transaction
can include any fee or none at all in the transaction. On the other
hand, nobody mining new bitcoins necessarily needs to accept the
transactions and include them in the new block being created. The
transaction fee is therefore an incentive on the part of the bitcoin
user to make sure that a particular transaction will get included into
the next block which is generated.
The client might send one transaction for free but then for the next transaction (even if it is for a smaller amount) the client might show that a fee is required. This is likely due to the makeup of the remaining coins in the wallet. After your first transaction, any change that was made gets sent back to you but that becomes a "newly received" coin.
To the network, if that second transaction includes this newly received coin that would look the same as a transaction made by someone trying to harm the network. That type of harmful action tries to re-spend the same funds over and over but without paying a fee.
So just like how there might be a candy dish on a receptionists desk and you are free to take one doesn't mean you are free to take all the candy from the dish.
That's the same approach here. The client will let you spend coins that have some time passed (i.e., were not just received) without having to pay a fee.
If your coins are instead being re-spent within a short amount of time (i.e,. same day), then the presumption is that you could be harming the network therefore a fee is required to prevent that activity. If it was a transaction being made without the intent to harm the network, then requiring a small fee shouldn't be that much of a restriction.