The main difference is that "Hij drinkt geen koffie" is the neutral way to say he doesn't drink coffee (habitually or generally), while "Hij drinkt koffie niet" is marked and implies a contrast or emphasis, often meaning he refuses it in a specific situation or that he normally does drink it but not now. Your initial interpretation is actually the opposite of the standard usage: "geen" is for stating a general non-habit, and "niet" is for negating a specific action or for emphasis.

In Dutch, "geen" is the negated form of the indefinite article "een" and is used with indefinite nouns (like "koffie" as a general substance). So "Hij drinkt geen koffie" simply means he doesn't drink coffee at all, no nuance about today vs. habit. It's the most common way to express that someone does not consume a certain kind of food or drink. For example, if someone asks "Wat drinkt hij?" and you answer "Hij drinkt geen koffie," you're just giving a fact.

On the other hand, "niet" is used to negate definite objects, verbs, or whole sentences. "Hij drinkt koffie niet" puts emphasis on "niet" and often indicates a contrast or a specific refusal. For instance, if you're offering drinks and he takes tea, you might say "Hij drinkt koffie niet" to mean he specifically avoids coffee (though he might drink something else). It can also be used to contradict a suggestion: "But he always drinks coffee!" , "Nee, vandaag drinkt hij koffie niet." In this case, the emphasis is on the negation of the action.

Real-world nuance: If you say "Hij drinkt koffie niet" without any context, a native speaker might think it sounds a bit incomplete or overly dramatic. It's more natural in spoken Dutch as part of a contrast, e.g., "Hij drinkt koffie niet, maar thee wel." For a general statement, always prefer "geen koffie."

Tradeoffs: Using "geen" is safe and neutral. Using "niet" with an indefinite object can sound unnatural unless you're stressing the negation. The word order also matters: with "niet" the object (koffie) comes before "niet" only if you want to emphasize the object; the typical negative word order in Dutch is to place "niet" after the first verb and before the object if the object is indefinite? Actually careful: Standard word order: "Hij drinkt geen koffie" (geen + indefinite noun). With "niet": "Hij drinkt koffie niet" is possible but less common; the more neutral negative with a definite object or verb is "Hij drinkt niet koffie"? No, that's wrong.

Let me clarify: For a simple sentence with a direct object, Dutch places "niet" after the object if the object is definite or when you want to negate the verb rather than the object. Example: "Hij drinkt de koffie niet" (he doesn't drink the coffee, i.e., that specific coffee). For an indefinite object without an article, like "koffie" as a general concept, using "niet" is possible but it always carries an emphatic or contrastive tone. So "Hij drinkt koffie niet" is correct but implies "as for coffee, he doesn't drink it" (maybe he drinks something else). In everyday Dutch, "Hij drinkt geen koffie" is the standard.

Concrete next steps: Listen for these patterns in native conversation or TV shows. Try constructing sentences where you clearly contrast two options: "Hij drinkt koffie niet, maar hij drinkt wel thee." And for general habits, always use "geen". Practice with other foods/drinks: "Ik eet geen vlees" vs. "Ik eet vlees niet" (the latter only if you're emphasizing a specific refusal). Pay attention to the context of the word order to internalize the difference. Ultimately, using "geen" is always correct for indefinite objects; reserve "niet" with indefinite nouns for deliberate emphasis.