As I understand it, in french you would never be so rude as to say, "Je vous achète un café." The idea of "buying" something for another is a little insulting. But if someone says, "Je vous offre un café ?" they are offering (to buy) you a cup of coffee. To which you may say, "Merci, vous êtes très gentil." But one would not use "acheter" in reference to the situation.
It's a good explanation. However, I'm not sure if we should stick to literal translation or we should go further and translate "offrir un café" to "buy a coffee". Even if we want to consider the cultural difference it's ok to translate "buying a coffee" to "offrir un café" not the other way around. In this lesson we have a similar situation about the verb "mentir" which is not accepted as "to tell a lie" because it's literal translation is "lying".
From an answer on another thread which I can't find now (I think by Sitesurf) I believe that while both can mean "buy", offrir has connotations of giving or offering wheras acheter is more about money, and that using "acheter" to offer to buy someone something is therefore a bit awkward and direct.
I agree. I don't think I've ever heard an english speaker say "He's buying a coffee," for instance, and if I heard "He's buying coffee" I would assume he's buying just one cup.
Although, if I heard "He's buying us coffee," I WOULD assume he was buying us each a cup, but largely because it would be odd for him to buy a group of multiple people just one coffee. Which is to say, I don't think you're ever likely to encounter this sentence in the real world.
Being an English speaker I have to disagree with your first sentence. You will commonly hear people saying "Oh, he's out buying a coffee" or "Are you going to buy me a coffee, then?". If you said "He's out buying coffee", it would be assumed he was buying, as you said, brewed coffee for the whole group or, possibly, buying dry coffee from the supermarket. However, within the context of going into a cafe, "Are you going to buy me coffee?" is perfectly acceptable, the open-ended nature of the number of cups making the invitation seem less time-limited.
I live in America, am 55, own a business and buy a lot of coffee. I do not recall ever hearing anyone saying they were buying "A" coffee. It has always been just coffee. If you address a group and say you are buying coffee, they will know it means coffee for all. But I would never go to Starbucks, and neither do my kind of people since the CEO said our kind was not welcome there. It is only since the advent of the trendy crowd buying $3 and $4 "coffee" at places like Starbucs that people have started saying "a" coffee.
I had to Google it... I gather "your kind of people" are gun owners - since the Starbucks CEO said guns were not welcome there. (...you could leave the gun behind, you know; then you'd be welcome there. They used to do that in old West saloons, right? just ribbing you) It's funny, because "my kind" of people also refrain from patronizing Starbucks: my kind is leftist progressives who dislike how big and corporate it is. How do they make any money with both sides avoiding them?
It does not change the French (the verb "offrir" is used). IN ENGLISH, the implication is that out on the street, one person is going to buy a cup of coffee for someone else. In the context of a meeting or in your home, you are not "buying" anything, but "offering" it. The context influences the English, not the French. If you're still wondering about "un café", just know that it refers to "a (cup of) coffee". So in a business meeting or in your home, you could say to another, "Je vous offre un café ?" = May I offer you a (cup of) coffee?. The point is that you do not use "acheter" in French for this, no matter where you are.
It is not better but it is more literal. In English, we would not generally say "offer someone a coffee" in this context but "buy someone a coffee". In French, however, we use the verb "offrir" rather than "acheter" for this purpose. If you're in your own home, you may absolutely "offer" someone a cup of coffee. But when you are visiting a coffee shop, using "offrir" refers to the idea of buying it for the other person. It's not considered polite to talk about who pays.
And just to throw another English option in there "can I 'get' you a coffee"... General use :-
"Can I buy you a coffee" = when payment is required.
"Can I offer you a coffee" = Polite, more likely to be used at home /work / or heard from restaurant staff.... Think of it as from a 'host' who has the coffee, to a guest /customer.
"Can I 'get' you a coffee' = can be used in all of these contexts and would imply "I'm buying" where payment is required. (Unless they were the restaurant /shop staff obviously)
Ps. Not suggesting this is a translation for the French in the question, just offering info.