Não é facultativa. É nessa propriedade que você indica se está controlando a transação na mão (RESOURCE_LOCAL) ou se está delegando para um container (JTA).
Porém, muitas vezes quando usamos uma transação JTA queremos por alguma motivo especial (nunca tive esse motivo) controlar a transação manualmente, ainda uma transação JTA, mas queremos ter controle programático. Usamos a anotação @TransactionManagement e indicamos o tipo.
O padrão quando usamos tudo controlado pelo container é
@TransactionManagement(value=TransactionManagementType.CONTAINER)
Porém, quando alteramos para BEAN:
@TransactionManagement(value=TransactionManagementType.BEAN)
`
Podemos mexer, fazer o que quiser com a transação através de:
@Resource
private UserTransaction userTransaction;
É mais burocrático, mas vai lá saber quando isso é necessário. E o chato é que você tem que ficar abrindo e fechando a transação na mão. Na forma padrão, o EJB já cuida disso para você.