The balancing issues in Skyrim come in many areas, in my opinion. And they are all, the symptom of poor mechanical and balance design.
Player power and ability vs enemy power and abilities:
Face it, no matter how someone tries to say otherwise, our character the player is 100% designed to be a super special snowflake. 80% or more of the perks and abilities players get, are not shared by NPCs. Enemies in fact, have almost always less than 150 armor rating,very few or 0 perks, and very few spells and/or shouts. And I have never, ever heard of an rpg game that lets the player outlevel the strongest enemies in the game by almost double. That is bad design in my opinion.
The problem shows, when you bring together combinations of perks that create unbalancing effects. It is very obvious the devs did not test many combinations and perk effects, since if they had actually assigned perks to NPCs, they might have run into problems in testing, for example by fighting an npc mage who can stagger lock you. Seems to me like willful negligence, that since they did not have to give NPCs the same perks as players, they did not have to balance player perks to not be unbalanced.
The solution here, is obviously to:
1. Design with a lower, more strict level cap in mind to begin with, and gradually increase it as content designed for the upper levels is made. As it is right now, enemies basically end at level 46, when the player ends at level 81.
2. Purposefully design enemies that are above the cap, at any given time to provide additional challenge. For example, if the cap was 50, they could have enemies in the game that are always between level 51 - 57 or so.
3. Design enemies with perks and spells/special abilities in mind, so that they are not all one trick ponies. Dragons having only one shout, when they natively speak the dang language is a joke.
4. Spread enemy variety around, mix groups and unit tactics to challenge what the player is used to. For example, enemy groups are not very diverse most of the time, but what if we end up facing a group consisting of two mages that exclusively heal their allies from long range, one heavy armor, boss type enemy, two archers, and two rogues?
5. Tone down enemy and player damage, and player armor, make it more about tactics and not who can 1-shot who?
Ai behavior
The Ai in the game can be very stupid, and exploitable. I find it a bit shocking they did not program even some very basic behaviors, such as:
1. Flanking/baiting type behavior
2. Medium wind up, unblockable, extremely high damage attacks to punish turtling behind a shield
3. Some form of leashing behavior, to prevent enemy groups from being cut down one by one, and to counter perching behavior
4. Basic, high damage counter attacks to prevent mindless melee spam
5. Some basic enemy party dynamics, like mage enemies buffing and healing their allies, high health enemies trying to distract and block the player from hurting weaker enemies, etc
6. Some basic hate prioritization beyond attacking whoever has the highest health
7. npc usage of racial powers
8. Counter spells, spell absorbtion/redirection abilities
Pausing and healing
This is a pretty big one, and is just downright silly to me that the player can pause the game at any time, and heal an infinite number of times. Best solution to this in my opinion is:
1. Cut down maximum amount of restorative potions(health/magicka) that can be carried at any given time.
2. Or, put a cooldown before another potion can be used
3. Or, Force potion use to be real time, no pausing
4. Or, make all potions restore health/magicka over time instead of instantly
Uncontested player attributes, stacking enchantment values, and no usage of diminishing returns
This one, is also equally silly. Player attributes that can be increased or manipulated are static values, that are not challenged by enemies. A sensible solution would be:
1. ALL player attributes (armor, resistances, skill level, weapon damage) ought to be contested against enemy skills and values. For example, a level 20 player fighting a level 25 enemy, has all of their attributes degraded against that enemy, because the player is lower in level. For example, said level 20 player vs level 25 enemy, would have all attributes calculated as being 20% less than it actually is,, against that enemy.
2. Diminishing returns added on to all attributes, (armor, resistances, skill level, weapon damage). For example, trying to raise any of those attributes beyond a certain threshold, would require exponentially more and more gains to see any benefit, resulting in a technical soft cap. For example, with fortify one handed damage, the maximum a player could raise it to before diminishing returns kicks in should be around 25% more damage at 100 enchanting, in order to raise it from 25% to 26%, the player has to have an enchanting value of 150. And from 26% to 27%, they would need 200 etc.
3. Enchantment value inherits the highest value. For example, if a player equipped three items, one with 25% one handed, 10% one handed, and 5% one handed, the player should have 25% to one handed as it is the highest value.
Bottom line: Devs should always balance for potential. You don't ignore something Just because not everyone can do it, the fact that anyone even can needs to be accounted for. A good game developer should design content like they are playing chess against the players who utilize their content and enjoy making players earn what they get.