Hello Nekojita さん,
~ます (like plain dictionary form), often means "future action", not "habit", though. Therefore without giving context it can be misleading to say that ~ます is always, or even most of the time "habitual".
東京に行きます → can (and often does) mean "I am going to go to Tokyo", not "I habitually/often go to Tokyo."
彼に聞きます→ Probably "I will ask him", not "I (habitually/usually) ask him".
彼と結婚します → almost certainly "I will/am going to marry him", not "I am in the habit of marrying him" (!!!)
Nitpicker

. All right then. It can be EITHER habitual or future.
That makes the rule even simpler, since the English simple present also exactly has these two meanings of habitual or future (see again the Wikipedia article).
So this confirms even more strongly the rule
"The ます form on its own is similar in meaning to simple present in English."
namely ます, just like the simple present in EN, can mean either habitual or future.
Incidentally, I'm wondering whether a maybe even simpler (and therefore more satisfying) "rule" for the meaning of ます or plain dictionary form might be that there is simply NO SPECIFICATION of time, other than that the time is not the past. That is, in this model I'm proposing, Japanese verbs denote by inflection two tenses only, namely either past, or non-past. Non-past is ます or plain dictionary form. Past is the inflection -た. Comments?
---
The more you try to boil things down to a single "rough rule of thumb", the more inaccuracies creep in. My old physics teacher called these "lies to children".
You're not incorrect, but nevertheless I fundamentally disagree with the point of view which your statements seem to imply. I'm an engineer by education, and models are a huge topic in engineering (as they are in physics). Models are a simplified view of reality (i.e. the same as my "rough guide of thumb" for grammar in languages).
Models are by nature always simplifications. But, the point is that despite this, models are USEFUL. You can not do anything practical without models. It is even valid to say that models can only exist because of their being simplifications. Error is inherent to simplification. But that does not make the whole concept of models wrong or invalid. In engineering, the way to work with modelling error is to compare with other models, and to map out the error interval.
Returning to the topic of language, I really fail to understand the issue y'all seem to have with simple and approximate definitions of the (range of) meaning that some grammatical construction has. I find it really surprising and curious. Is it a lack of ability of thinking abstractly, i.e. of thinking and reasoning about things that do not have a very concrete meaning but instead that have a more abstract and generic meaning?
Language, building sentences, is by nature the combining of relatively generic "building blocks" (words, grammatical constructs) into a sentence that has a relatively special meaning. This is a fundamental property of every language, from Dutch to Hopi to Swahili.
The building blocks have a relatively generic meaning. As a beginner (or to be more accurate I want to extend that into: as any language speaker), it is IMO crucial for correct language usage that one has a clear picture of the meaning of each of the building blocks one is using.
To state that the only "real" kind of meaning worth talking about in language only ever comes into existence in complete sentences (and with all context taken into account) is IMO just fundamental misreading of the mechanics of language.
I say that models are not lies, and that instead they are abstract representations of reality, with a certain known accuracy (i.e. error margin), and with a certain known application range, i.e. range of situations in which the model is valid. In languages, I say that rough general meanings attached to the building blocks (words, grammatical constructs) of the language are not lies, but are instead the generic elements of meaning that contribute to the (more specific) meaning of the sentence.
I say that discussing the meaning of these generic language elements is crucial towards becoming able to speak a language correctly. Always stopping any discussion of the meaning of a grammar construct in the bud by saying that the discussion is useless since the thing talked about has a certain error margin is IMHO just, well, a kind of self-debilitating way of thinking. That is my humble opinion. Please note that I'm not talking here in an "ad hominem personal" way, and please excuse my maybe somewhat strong choice of words.
--
A common one in Japanese is teaching people that ~ている means "ongoing action",
and then people run into issues with, for example, "来ている・行っている".
e.g.:
田中さんが来ます (Tanaka is coming for a visit).
田中さんが来ています (Tanaka has arrived and is currently standing outside your office).
This is a good example of just what I mean.
The "model" that we're talking about here is that in the ~ている construction there is, somehow, attached the meaning element of "ongoing action".
The error in your example lies in the inappropriate too-literal formulation of the rule, and in the inappropriate too-literal application of the rule -- i.e. a lack of abstract thinking ability --, not in the model that there is here a language building block with the meaning element of "ongoing action".
In 「田中さんが来ています」, there is still present the meaning of ongoing action, namely Takaka, having arrived, IS STANDING there.
The only thing that is special with 来ている・行っている is that with these two verbs 来る and 行く, the "ongoing action" meaning element is attached to the auxiliary verb います, instead of attached to the main verb as usual. This is indeed a notable thing. But it is a thing that needs to be taken account of in the model. (Note: 来る and 行く are special in many ways in Japanese, so the fact that they are special also with regard to this compound verb construction should not be very surprising.)
So the very abstract model that ~ている means "ongoing action" still stands.
The more concrete model that identifies exactly to which sentence element the ongoing action meaning is attached is slightly more complex, namely 来る and 行く are special cases. This is simply a matter of accurate formulation of models, and accurate definition of the areas of application in which the model is valid. In the "来る and 行く" cases, you use the model that states "ongoing action belongs to auxiliary verb". In all other cases, you use the model that states "ongoing action belongs to main verb".
---
In 「田中さんが来ます」, the ます as always indicates a present or future tense meaning. Of those two, in your translation you chose the future meaning, and formulated that in English as "Tanaka is coming". The "-ing" here does not indicate "ongoing action", but instead indicates future. The translation "Takaka comes" is just as valid.
---
With best regards,
Menno ( メンノー )