Sorry for the late reply. Indeed, as a European I've stumbled upon this difficulty myself. It even applies between bordering Central European countries, where a mere 100 km between cities in different countries can mean an absurd one-way fee... Multinational rental outfits would be wise to get around this for a lower fee. Anyway, to the case in point.
The best way to somehow get around this is to pick border cities to the furthest possible extent. In your case, were you to say take a train from Zurich to Geneva where presumably you can rent a car as if in French territory, then travel to Italy as you wish and return the car in the nearest French city to Barcelona, that would probably be Perpignan.
I once reserved a similar rental plan: to travel from Brussels to Portugal, I would:
1) take a fast train ( TGV, 35 minutes) to the nearest French city, Lille
2) rent a car in Lille and return it in Biarritz in the French Basque country near Spain
3) take a train from Biarritz to Irun in Spain (30 minutes) and travel from there to Vigo near the Portuguese border
4) take a bus from Vigo to Porto (1h30).
If you're a party of 2 or more, only one person needs to do the "dirty work" of course and can then go back to pick up the rest of the people as you progress from country to country.
Depending on your type this might sound attractive ( I must underline this would mean something like a 600 eur saving on an original 900 eur quote for a one-way rental) or lunatic. You judge
best, Pedro