I would not say that Box2d is "heavyweight" in the sense of that it is "slow". Lots of games use it with success, and I've yet to find someone who points at box2d as a performance bottleneck (assuming he/she was not doing something crazy with it).
The problem box2d has is that is is heavyweight
cognitively and in
behavior. You have to learn a lot of concepts and their relations in order to use it. This is in part because it models
physics, not only
collisions. I also should point out that the physics it models are more or less "standard newtonian".
This means that if your game requires a lot of realistic physical modeling, with solid objects, many kinds of joins, and physical properties like friction and restitution, box2d is a good match for it. On the other hand, if your game only needs a small set of rules (maybe collision detection, a bit of gravity and that's it), or if the concepts it requires don't match well with newtonian physics, then box2d might not be a good match for it.
The best scenario that I can think of for box2d is Asteroids, or a ship game with similar handling. The rules of physics required for that game are almost identical to the "default" ones given by box2d. So there will be "tweaking" (change the value of this force, increase the restitution of this other), but almost no "trickery" (i.e. replace this shape by a bunch of line shapes). You can even do fancy articulated ships with joins quite easily. You will still need to know physics, mind you. But you will not have to 'trick' box2d almost at all.
The next place I can think of where box2d is good is in a pinball game. You don't have lots of concepts in a pinball game, but the physics of the ball can be done with a bit of the default box2d gravity and collisions, and the rest of the elements of the game will mostly be static objects with certain special properties (like restitution). So they are a good match.
On the other side of the spectrum, there are most platformers. In general, a platformer doesn't need lots of concepts: "player", "platform", "gravity", "jump". Maybe some "ground" and "enemies".
Not only that, but the physics needed, while more or less "realistic", are not newtonian. For example: in a platformer, when there's a column of stacked boxes, you expect the player to be able to "run over the one on the top and jump forward" (maybe to reach some hard to reach treasure). In newtonian physics, with the right coefficients, the box at the top will "go backwards" as the player tries to runs over it; then probably the column will fall backwards, and the player downwards. This is realistic, but not expected in a typical platformer game.
If you want to get the "platformer feeling" with box2d you end up having to "fight" the realism to "simulate" what we expect from platformers. You end up doing things like giving boxes infinite mass (for example). But then this has unintended consequences: if you later decide to manually move one of those boxes with setVelocity (even with a slow velocity), and it hits the player, it can propel him into the stratosphere, because of the
conservation of momentum. And so on.
This is fine if you are trying to do a "waky" platformer, or if you are willing to spend a lot of time "fighting" and "tricking" box2d so that it behaves like you want instead of how it wants to. Lots of people go this route. I personally think it is like killing a mosquito with a bazooka.