EJBのメリットは、開発者が本来気にしなければならない基盤的な部分を
隠蔽してくれる(または外部パラメータ化してコードレスで制御できるようにする)
ことじゃないかな?
XA分散トランザクション制御もそうだし、インスタンスのライフサイクル管理や
プーリングなんかも楽でしょ?

例えばStatelessなEnterprise Beanなんかに対して、最初は
「デフォルト時は常に3インスタンス生成しておいて、ピーク時にも最大500インスタンス
までしか生成させないようにしよう」とかやっておいて、
将来的に「あ、やっぱデフォルト10の最大800にしよう」とかしようとした時に、
パラメータをいじるだけで簡単に変更できるし。

これが普通のBeanだったりするとわざわざSingletonパターンで自前でこういった
仕組みを用意しなければならない。