+2 AC is much more than an 8% improvement, in one case it is as high as 200%.
Erik’s and Quadratic Wizard’s answers do a fine job of comparing the proposed item to existing magical items in the DMG. The trouble is, if I only believe it is an 8% improvement in AC, I’m going to conclude that the DMG is wrong about how strong +2 AC is. So it seems good and necessary to actually correct the notion that +2 AC is only an 8% improvement.
Sure, the number increases from 21 to 23, which is an improvement somewhere between 8-10%. But that is not how we measure the effectiveness of AC or how much it improves when we increase it.
I have constructed the following table. Column 1 shows that hit bonus of the attacking creature. Columns 2 and 3 show the probability of that creature hitting ACs 21 and 23, respectively. Column 4 shows the percentage of attacks that would hit AC 21, but miss AC 23. Finally, column 5 shows the percentage improvement in survivability of the change in AC. Column 5 is how we determine the marginal effectiveness of a change in armor class.
As you can see, even against the mighty Tarrasque (+19 to hit), the improvement is still better than 8%, sitting around 12%. But we aren’t fighting a Tarrasque at level 6. As mentioned in your question, we’re looking more in the range of +4 to +6 to hit, which gives +2 AC an improvement between 50% and 100%, which is quite significant. 50% of +4 to hit attacks that would have hit me before now miss me. In terms of survivability, this doubles my durability. Increasing my AC from 21 to 23 means I can last twice as long (on average) against a creature that has a +4 to hit. That’s a 100% improvement. Not 8%.
How powerful is AC 23 at 6th level?
It’s pretty powerful. As in, most encounters at this level will pose virtually no risk of harm. But let’s try to set up something of an experiment and run some numbers.
Say our paladin with an AC of 23 is out adventuring solo and gets attacked by three blue dragon wyrmlings.
A blue dragon wyrmling has +5 to hit and deals 1d6+1d10+3 (average 12) damage on a hit. Consulting our table, the blue dragon wyrmling has a 15% chance to hit our paladin with an AC 23. Thus, the average damage sustained by our paladin each round is:
$$3 times 0.15 times 12=5.4$$
A 16 CON paladin taking the average increase for hit points each level will have a modest 58 hit points, which means our paladin can be expected to last for 10 rounds before dropping in the 11th round, assuming he doesn’t use any healing spells or lay on hands. For simplicity the wymrlings didn’t use their breath weapons at all.
You take this absurdly reliable talent for not getting hit by attacks and spread those attacks out across the party and this paladin will rarely have to polish his armor.
Now, I would be remiss if I did not mention that AC is not the only part of combat survivability. An armor class of 30 will do you no good against spells that damage on failed saving throws. But AC is still a huge part of combat survivability.
I get that this is oversimplified in comparison to actual combat. But I think it demonstrates the point well enough. In my party of 5, our Paladin plays the tank role very well. Most of our combat encounters are 3-5 rounds and we have 1 or 2 per 4 hour session. We are also 6th level, his AC is 19 and I still feel that he almost never gets hit. From experience, 19 is very good. An armor class of 23 is broken.
So what do I do?
This question has some great suggestions for handling this in a way that is engaging and fun for both the DM and the player: I gave a too powerful magic item at too low level for a bad reason, what to do?
This situation is a little bit different than the specific situation detailed there, but the ideas and principles can still apply.