This is by design. By gaining XP for failures, the PCs are naturally "floated up" to the level of the challenges they are facing. This means that if you're making the game hard—that's OK! It's not unfair, because the PCs get that bonus XP from failing as a consolation. It also means that if you're making the game too easy, the PCs won't level as quickly—and increase the gap between the difficulty you're setting and their competency—as they otherwise would.
The other nice feature is that when some players' dice are "hot" and they're succeeding a lot more than others, they will advance just that much slower than the rest so that they don't steal the spotlight. Conversely, someone with just terrible "dice luck" will rocket past the other PCs, making up for their awful dice—but without neutralising the importance of any given roll like other "luck" balancing schemes might.
It's a very deliberate design feature of the game. It adds a degree of homeostatis to the system, so that you can still have moment-to-moment drama, uncertainty, and interesting small-scale imbalances, but the system self-regulates so that the extremes aren't overly common and it always pulls back toward the system's centre of gravity. The large-scale effect is that the overall probabilities of success and failure are dynamically matched to your players, your campaign, and your GMing style without you having to do a single ounce of work to make that balance happen.
In practice, this means that I never have to pay attention to the XP the players have. And with honest players, you don't even have to worry about giving it out, ever*, just letting failures and the moves hand it out for you. My group has just leveled to... 5th, I think? And I think some of them aren't there yet, but I couldn't tell you who. The thing is, I'm not paying attention because I don't have to—it's not something that matters to the Dungeon World GM. The XP will take care of itself (once everyone starts remembering to mark it when they should), and their level doesn't matter for session-planning reasons. I do make sure I know when they take new moves—but only so I can help us all notice when moves trigger. The XP itself you can just put out of mind, so you can focus on running the world.
Should you retroactively give them the missed XP?
Yeah, go ahead. They earned it, and there's no balance reason to withhold it. Trying to remember how many misses they each got might be hard, but they'll help, and being a bit off won't break anything. Getting a fistful of XP is also a great way to start the session, too!
* Well, not quite never. I do occasionally offer an XP as part of a "hard choice" when the character might be tempted to act a certain way that the player obviously wouldn't choose otherwise. It's great fun to respond to a failed Discern Realities roll with, "Oh yeah, you definitely think the fountain's water is safe to drink. It totally isn't, but you can mark XP if you drink it anyway. What do you do?!" It's a great built-in way Dungeon World can solve the problem of character- versus player-knowledge metagaming.