As someone who lives and breathes Backbone at the moment, I think its biggest problem is that the framework itself provides not nearly enough guidance to write maintainable and testable code, nor does its documentation. It's not nearly clear how to start your app in a sensible way, where to put stateful non-view, non-model logic, and how the pieces should all communicate. So, you start cobbling your Backbone app together, making architectural decisions as best you can, and then months later, you realize you've created an unmaintainable mess. I've had this experience coming into two large projects so far.
I'm sure everyone's second Backbone app looks a lot better than their first, but it's still an underdesigned framework, IMO. I think Marionette does a lot of good in terms of adding those missing structures and best practices, though. And I'm also intrigued by the idea of replacing views with React components.