All the lock mode types are required to be supported. However, they are not required to be supported on non-versioned entities.
I think PESSIMISTIC_READ is not required to be supported; and if not supported a request for it will be upgraded to PESSIMISTIC_WRITE:
Spec:
It is permissible for an implementation to use LockModeType.PESSIMISTIC_WRITE where LockModeType.PESSIMISTIC_READ was requested, but not vice versa
ProJPA2:
Pessimistic Read Locking
Some databases support locking mechanisms to get repeatable read isolation without acquiring a write lock. A PESSIMISTIC_READ mode can be used to pessimistically achieve repeatable read semantics when no writes to the entity are expected. The fact that this kind of situation will not be encountered very often, combined with the allowance that providers have of implementing it using a pessimistic write lock, leads us to say that this mode is not one to be easily picked up and commonly used.