I'm still able to reproduce this trouble with the 42Gb datastore.
I've been able to do it once with a smaller datastore, I will try to figure out what is exactly its cause.
It seems that jackrabbit-core used by my RAR is 1.4 (not 1.4.5), even if other libs are 1.4.5.
Getting jackrabbit-1.4 from SVN, I've some doubt about something in org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager::getAllNodeIds :
--> Statement stmt = connectionManager.executeStmt(sql, keys, false, maxCount + 10);
With "+ 10", infinite maxCount (0) is turned in 10, so as far as I understand, getAllNodeIds asks its connectionManager to get all nodes, but with a query whose result is limited to 10 rows.
If I'm right, GarbageCollector using getAllNodesIds from given IterablePersistenceManager (scanPersistenceManagers) doesn't "really" get all nodes (due to rows limit), and so only some nodes are marked (date updated). Nodes not marked (not included in retrieved rows), are then considered as removable by the deleteUnused method of GarbageCollector.