Sometimes mapping tools have trouble with certain database schemas, especially overly complex ones. In those cases, BMPs are often the only choice. That was a common use a few years ago, especially when VisualAge for
Java had trouble with even many to many relationships. Many of those problems have gone away.
Sometimes developers see opportunities for custom designs which might optimize data access, which normal CMP mapping wouldn't take advantage of. In those cases, you may see BMPs being used. Also, sometimes data isn't in a normal, relational database, which makes BMPs another options.
CMPs are typically easier to develop, easier to maintain, and easier to code (since they don't really have any code.) CMPs tend to create a more flexible and maintanable solution, which in typical scenarios, makes them a better choice, but of course, your mileage may vary.
Cheers!
-Cameron McKenzie