For example, we have an object on node 3. We then add node 4. The object's hash will now map to node 4. However, the object was actually never moved to node 4.
If <hash rehashEnabled="false" ../> this is to be expected. Rehashing does just that: on topology changes, migrate entries to their new owners. Disabling it makes the topology changes more lightweight/quick, but also leaves creates inconsistencies as the one you've described. I would say only disable rehash when you need to allow members to quickly join/leave the cluster and when consistency is not an issue for you (i.e. you might not see a entry in the cache even if it is there). From the top of my head I can't think about such a scenario though
That is what I figured as well. I just needed to confirm.