The reason is that request-scoped services are implemented as transaction services. Most of the time the scope of a request and the scope of a transacion are one and the same: there is just one transaction per scope. However, TransactionService#nextTransaction admits for there being multiple transactions per request.
This bug is that the current implementation for RequestScoped does the init/close as part of the Transaction management. Instead, this should be part of the PersistenceSession#open/close (a PersistenceSession wraps a JDO session, so basically corresponds to the request).