I assume you've already seen this. (Moveset Grades Explanation - https://pokemongo.gamepress.gg/moveset-grades-explanation)
Also, check out topics like this for more info on gym battles mechanics, if you don't already know. (Need help to use Pokemon GO Species Data (w/ Movesets) sheet - https://www.reddit.com/r/TheSilphRoad/comments/53yqjq/need_help_to_use_pokemon_go_species_data_w/)
Just like you mentioned, if you dodge every single attack perfectly and avoid doing charge attacks that will end up also reducing your own hp too, you can finish a battle with optimal hp. As mentioned in the topic I've linked, besides dodging, there are also other mechanics in play such as type advantages (moves and pokemon), defender hp bonus, and defender AI behavior.
The various move-sets excel sheets/lists all follow the same principle, which is to come up with a formula that is applicable for every single player, without making it too complicated by accommodating unpredictable conditions such as defender's moves/types/IVs. Since it is impossible to categorize every single scenario and still make the move-set list user-friendly, you will find that most people generally focus just on DPS, and create separate lists for Attacker move-set and Defender move-set.
You should just use the list/excel sheet as a guideline and do what's best for you. If you look at this move-set excel sheet (https://docs.google.com/spreadsheets/d/1hcFo7-UGWx1k1u1BHOvDhq8foPeRr7YbX2jLjjJK0Qw/htmlview?sle=true#gid=1036598933), you should see two columns for Tankiness (approximation for your ability to stay alive/base hp * base def) and Duel Ability (approximation for your attack strength if you don't dodge/tankiness * gym offense), a.k.a the worst case scenario. You should take that into account when formulating your attack style. Logically, if given a choice, nobody would ever not dodge when they see an opponent charging their move. Especially now, with the introduction of attack buffer, nobody smart would continue button-mashing during an attack and risk missing an important dodge.
A little bit about my particular situation, which has nothing to do with the topic on hand:
I can use my 1200 84% attacker Wigglytuff (pound/hyper beam) to beat my 2700 97.3% defender Dragonite (dragon breath/hyper beam) within 35 seconds consistently by using exactly 1 Hyper beam as soon as I can. I only dodge once when my Dragonite starts charging up his hyper beam, at which point I dodge to the side and use my own hyper beam. I end the battle with about 20% health. All I need to heal him back up is 1 hyper potion or 3 super potions.
If I only use pound+dodging against my Dragonite, I will end the battle with slightly less than 40% health, but take about 60 seconds. I will require 2 super potions to recover to full hp. If my potions are low, and I really need to train up my gym, perhaps I can do just that.
However, that is only applicable for gym training. If I'm fighting a rival gym filled up with Dragonites, for example, chances are the 2nd pokemon would be stronger than the 1st. If I required 50% hp to take down the 1st pokemon with type advantages, I definitely wouldn't be able take down the 2nd stronger pokemon. The best I can do is use my charge move immediately, and then switch out my pokemon to conserve revives.
In real life scenario, it's more probable that I will face gyms with pokemon of different types. Since I always plan ahead and prepare my team depending on type advantages, I usually end the battle taking minimal damage and inflicting maximum damage, even if I don't dodge much. This means that I can end the battle fast without using up precious revives, even if I need to use more potions instead.
This is especially important to me in my city, because of its dense population. The gyms are all located beside apartment buildings. As everyone knows, when one is fighting a gym, sparks and smoke around the gym will visually show on the map. If I spend too much time, somebody will definitely claim the gym as soon as I beat the gym, even if it was 3am. So instead of resources, speed is more of an issue for me.