*snip*
The person sending the bitcoins pays the fee. thats how the system works.
transaction fees are in bitcoin. the minimum fee is set so it cant go lower unless enough people on the network change their default settings. Since people dont change them, you can consider the minimum fee rules mandatory. As a result of the bitcoin fee not changing, when the USD value of bitcoin changes so does the USD value of the bitcoin fee.
Periodically the bitcoin client is updated to account for this and adjusts the minimum bitcoin fee to be lower. (it used to be .01). They must do this carefully so they dont make the fee too low in case the bitcoin value swings up and down.
One of the things the devs are currently working on is implementing a system where the fee floats so it wont have to be updated in each client. ie. it will have a steady value in other currencies.