Ok. I found the root cause for TestRollbacks. Unlike [1,2], the root cause here was invoking the database level (Journal) abort() rather than just the tx abort() from the BigdataSailConnection subclass providing support for transaction isolation. This was causing the write sets on the unisolated lexicon indices to be discarded when only the isolated statement indices should have had their write sets discarded.
While this provides a clear reason why TestRollbacks was failing when using full transactions in the triples only and sids modes, it does not explain why it was not failing in the quads mode. That remains a mystery.
I have also uncovered some possible issues within the LexiconRelation's addTerms() / getTerms() methods that I want to talk through with MikeP in a code review.
I will modify TestRollbacks to run as a proxy test for each of the triple store modes (triples, sids, quads) and both with and without full tx isolation and incorporate those variants into the test suite. I will also propagate the necessary test suite changes and the change to the BigdataSailConnection to the trunk and verify correct operation there as well.