Roger's advice is practical and given the nature of this subject, probably sound. It would be nice, though, to understand what the designers had in mind when they made their decision and who knows, perhaps one of them will answer you! For what it is worth, it seems to me that they were writing for the container provider (CP). The CP has a choice between passing messages from the JMS service to the consumer(MDB) either with a transaction or not. If the CP starts in a transaction, Required allows him/her to continue in one. Otherwise NotSupported. RequiresNew is different in that it would end the CPs original transaction and start a new one and from a CP point of view, isolating the MDB part is not what the CP wants.
Meg, I also had the very same question. But after little bit of thinking this how I convinced myself. There is a subtle difference between them. If you say "Required" then it means that you need a transaction. But it is the container that decides to give you a new one, if one is not present or an existing one, if one is present. But if you say "RequiresNew", you could assume that there is a possibility that you might be given an existing transaction, so you are telling to the container, do not ever me an existing transaction and always give me a new one. In case of MDB there is NO such possibility so in order avoid this ambiguity (the assumption that you might be given an existing one), "RequiresNew" is not an option.