JavaEEのCDIとEJBの関係や使い分けについて、混乱しています。

DIをしたい → @RequestScoped等のスコープを指定する(CDI Beanを作る?)アノテーションと、@Injectアノテーションを使う。

トランザクション管理をしたい → @Transactionalアノテーションを使う。

この程度の要件であれば、EJBのアノテーション(@Statelessとか@EJBとか)は、使う理由が無いのですか?
CDIとEJBとで機能的に重複しているものが多いように感じていますが、どう考えたら良いのでしょうか?
そもそも「CDIかEJBか」という対比ができるような概念なのかもよく分かっていません。

関連する質問:@Statelessと@RequestScopedの用途の違い