In certain places we can afford having just concurrentHashMap playing (adding / removing), but at the time we iterate we just need an instant copy.
But if all the access are going through a synchronized block, then I agree there's no reason to use a ConcurrentHashMap.
This was fixed through tests on EAP. It was done under a lot of pressure to have it fixed. Maybe I didn't do a proper analysis on the fix.