When using XA with more than one resource, Oracle by default uses a "tightly-coupled transaction" mode for the various transaction branches of the resources. In this mode, all the resources except the last one return XA_RDONLY when prepare() is called, and only for the last resource does prepare() return XA_OK thus triggering the normal commit(). This is likely done to avoid doing one more round-trip to the database per resource.
However it means that receiving XA_RDONLY from prepare() does not necessarily mean that no work was done by the resource, so there may still be invalidations that have to be sent.
See http://docs.oracle.com/cd/E14072_01/appdev.112/e10471/adfns_xa.htm#ADFNS810 for reference.
A consequence of not sending invalidations is that data may appear inconsistent between two session.
Note that this bug only happens with two or more XA resources, which can only be the case with two or more VCS repositories, or a VCS repository and a XA JDBC datasource.