I don't disagree that HR's job is to hire you for the lowest possible price. However, I see the information you concede as largely irrelevant if you are knowledgeable about the state of the market. As in stocks, past prices don't matter, only what someone else will pay right now.
Two bad things that can happen to you if you give up your salary history, even if both parties are rational:
(1) You can convince HR that it's not worth negotiating with you because your salary demands will end up too high.
(2) You can convince HR that it's worth lowballing you and then waiting you out as long as possible because your salary history demonstrates your negotiating floor is much lower than you think it is.
It's that simple. Of course, you don't have to take a crappy offer, but part of the point of salary negotiation is not to get crappy offers.
And a good way to imply that you're desperate is to give them lots of details about where you were working, when you were working, and how much you were making.