When you use BMT, you manage the transaction. You use UserTransaction for create and commit the transaction.
The point here is that UserTransaction create a transaction in the current thread and when you call another EJB, that call will be executed in another thread (with its own EJB's life cycle).
In CMT, the container interpose on the method invocation for handling the transaction.
3.1 UserTransaction Interface (From JTA specification)
The UserTransaction.begin method starts a global transaction and
associates the transaction with the calling thread. The
transaction-to-thread association is managed transparently by the
Transaction Manager.
Support for nested tranactions is not required.
The UserTransaction.begin method throws the NotSupportedException when
the calling thread is already associated with a transaction and the
transaction manager implementation does not support nested
transactions.
3.2.2 Completing a Transaction
The TransactionManager.commit method completes the transaction
currently associated with the calling thread. After the commit method
returns, the calling thread is not associated with a transaction. If
the commit method is called when the thread is not associated with any
transaction context, the TM throws an exception.
13.2.5 Container-Managed Demarcation (From EJB specification)
Whenever a client invokes a method on an enterprise bean’s business
interface (or on the no-interface view or home or component interface
of an enterprise bean), the container interposes on the method
invocation. The interposition allows the container to control
transaction demarcation declaratively through the transaction
attribute set by the developer.