With a focus on 5E, the one thing that contributed more than anything was the sheer amount of combat required to get a party of high-level characters to the point where they had to begin thinking about taking a rest. Then, after slogging through thousands of HP worth of purple worm or kraken, they take a rest and it all starts over from scratch. It's mind-numbingly tedious, and even if I try to keep things interesting with the descriptions, it starts to wear thin about an hour into each session.
I highly recommend experimenting with other forms of leveling up. Not only is grinding through volumes of monsters tedious, but it strips the game of mystery and even, ironically, danger. In all three of the campaigns that I've run since 5e came out, none use typical XP for combat systems, at least not for long.
First Campaign: homebrew.
I started off with a mix of XP for combat based on published XP numbers in the MM, which you could also earn by avoiding combat (depending on the challenge), and milestone leveling. This was pretty much in line with the DMG's advice. Eventually, starting around tier 2 we switched to pure milestone leveling. The players just increased their level every 1-3 sessions, after the completion of a quest, adventure, or other important milestone. That allowed us to play through all 20 levels in about 2 years. Now, some of those levels were only played for maybe 8 hours, but it worked for us.
Second Campaign:
A ran Curse of Strahd using R Pardon's "A Structured Milestone System for Curse of Strahd" which I made modest changes to. Basically you earn points based on a mix of major foes defeated, macguffins found, places explored, moving the story forward, and blocking Strahd's goals. The party levels together based upon the number of points they have earned. It is a good system to encourage all forms of play and is dead simple for a DM to use. I had a one page sheet where I would check off milestones and keep a tally of points. And we are talking about a max of maybe 50 points, so very easy to track. The only change I would make if I were to do it again is to use only whole numbers. Pardon uses a lot of quarter and half points. It would be even simply to just have milestones worth 1 to 4 points.
Current Campaign:
I'm currently running Rappan Athuk by Frog God Games using an XP for GP plus milestone system. I love how it rewards more creative styles of play. Also, in a setting as deadly as Rappan Athuk players are not punished for doing the smart thing and being sneaking and running away. It does mean that leveling can go very slowly, especially since there is no XP for sold magic items. The party hasn't hit tier 2 yet after a year of play. If we decide we want to increase the pace of leveling, I'll likely handle it in two ways. (1) I will start rewarding XP for the value of magic items that are given to allies, use for an important quest purpose, or even sold if it involves significant effort in finding a buyer, (2) more and bigger milestone awards, and (3) just deciding to move up a level.