Regression vs Classification to rank by profit
This actually isn't too surprising given the context in my opinion. Classifying an observation as "1" = spent money in past and "0" = did not spend money in past causes you to lose information that in your case is important; that is, the amount of money that each person gave.

Imagine these two scenarios, for example. In one scenario, you send your letter to ten people and all ten people send back 100 dollars each each. Using a classification scheme, these ten people are all "1"'s. In the second scenario, you send your letter to ten people again, but now only one of ten respond. However, this one person sends back a cheque of 10,000 dollars. From a pure profit point of view, clearly the 2nd option is superior.

Ultimately, both your classification and regression models answer two separate questions. Your classification model simply predicts how likely someone is to spend any amount of money, (by how you have phrased the question, anyway) whether that is 10 dollars or 10,000,000 dollars there exists no distinguishing between the two with a classification model (as you phrased it). The regression model predicts the exact amount that each user is expected to spend which if I am reading your question correctly, is what you care about.

If you want to make the problems closer in scope, perhaps try defining in your classification model as "1" if person spends over some profitable amount of money, and "0" if they don't. While I don't agree very much with doing this (you lose information this way by "bucketing" a continuous variable, and also, why make the problem harder?) you might get "closer" results.