I think it is more this, attacks rarely reach their AC and they hit the NPC/creature AC and beat it by 10-15 more
Ok so, several things.
Are you and your players having fun with this level of difficulty? if so, no real need to change. if not, then Ok change.
No published advdneture can account for all the vagaries of the parties so thats why every one expects the Gm to adjust.
One option may be to just let them bow thru the one they are on and see if the higher challenge is more at the difficulty you and they prefer (assumes you do not level them up for the easy squash fights) Higher level portions have enemies with more options and easier to-hit rolls.
Another option would be to increase the numbers of lower baddies **and** have a number of them use the "help" actions to distract and hinder the PCs, allowing their buddies to gain advantage on attack rolls.
Shove prone does not go through Ac at all and can also give a lot of closer attackers the advantage on their melee attacks.
Extra kobolds throwing buring oil or smelly poisonous stuff can really shift the odds and consume a lot of party resources.
Specifics on the party high AC can play a role too. if it is based off spell boosts, those can be exploited by keeping the party tied up and unable to replenish those spells.
if it is due to attributes not so much but that points to a need to insert a few higher level adversaries to be able to get the hits *or* hinder the party enough the others get hits.
One shot items/circumstances like say a hold person talisman or glyph can also play a role. A prepared battlefield with some planned glyphs and tactics based around them can do a lot. hold person gives advantage on attacks, cuts down PC actions and also gives crits for attacks from within 5'. Sure, some will save initially but any who fail should be subject to as much piling on as is feasible. (this can be big with NPCs who have the bonus dash against targets features.)
The key is, numbers and resources can give you the ability to "overcome" a simple numerical skew from abilities *if* they are applied with tactics to match.
Another less frequently available option is to try and prevent some of the resource control - separate healers from the others so that it is harder to get touch healing spells off. A grapple avoids AC and can stop a character's movement cold (cost an action to escape) and shove can push them down and force them to get up, using speed they need to get close - and both can be readied.
PC gets separated and in trouble by even a little distance, there are ways to make the line of sight and approach between them and the other players broken or difficult terrain. cannot select as a target a PC you cannot see and closing for a heal by touch gets really difficult at 2-for-1 movement rates.
Another key element though is escape and timing.
it does no good to do these things if the PCs have easy outs and no pressure to keep going even when they have taken a setback.
If you want to challenge them in 5e the idea of a full nova and withdraw against published adventures is not going to work.
So, as part of the numbers and tactics, there need to be added enemies who are working on preventing escapes.
At some levels that can be kobolds going behind the party from other paths and setting traps in case they flee back the way they came or blocking exits. At other levels it may be keeping certain types of casters in focus and separating them from the others to prevent teleport.
in some circumstances letting them retreat and then sending hunting parties to hit them while they rest may be good. But at some levels they may need to include casters who can detect and drop magic huts and tricks when the trackers lead them to the right spots.
Additional foes alone might not be able to reasonably overcome their power level skew, but numbers and quality combined with tactics and planning can go a long way to making the challenge facing the character become one they cannot just "jock" their way through relying on superior stats to win the day - which i *think* is the goal you want to achieve.
Hope some of this helps.
Oh and an aside...
In some cases, i have had "lair" encounters designed with the idea that some of the early defenses were there to "assess the threat" as much as stop the invaders. the idea being that through either observations from afar or how quickly things went from A to D the leaders could get an idea how powerful the foes they were facing are and could react accordingly. This kind of fits with a setting where it might be rookie heroes or major legends knocking on your door and you need to know which.
So, in some cases, i had the defenses setup with "react accordingly" in mind and fact finding early on as a goal and then there would be several different contingencies - one of which was either "evacuate what matters and stall the attackers" and others might be "push the big red button to call in help from above (higher level "phone-a-fiend" lifelines) or just shifting some encounters to lead the attackers to prepared set pieces.
heck, if we got word out to bigger allies and we can collapse a tunnel and wait out the time remaining... that can work just fine.
of course, sometimes the fact finding may lead to "negotiation" - finding out thru dialog if there can be a compromise - which in itself may be a stall to get some evacuations done.