In a CMT, the container starts, commits and rolls back a transaction on your behalf.
In BMT, the client programmatically determines when the container should rollback the transaction.
In CMT, the container determines when to rollback.
So, I think in both BMT and CMT, the transaction manager in the EJB container which does the rollback of transaction.
I guess the client itself does not rollback the transaction.