On the other side of this, I see a lot of discussion in the gaming community lately about taking up languages other then C++. You should go read up on some of John Carmack's thoughts, or even take a look at the guys who wrote Go, and why google is dumping a lot of their C++ code.
IMO large complicated C++ programs are not something humans can reason about effectively. Bullet is pretty clean, it's complexity is just par for the course for a large C++ library that's been around a while.
In my experience AAA games get more complicated then they need to be, because of the timelines that have to be met and the shortcuts that get taken. It's almost impossible to not have some really crazy stuff after 2-3 years of tight deadlines. That leads to code that is complicated to reason about when it really shouldn't be. Not because of bad developers, but because you just can't crank out good abstractions around C++ code at that pace. The number of C++ codebases in the game industry that people look at and say 'that's really good code' is tiny, I could probably count it on half a hand. But on the other side it got a lot of games to production and satisfied millions of users, so who's to say what the best approach is?
Chris