Until recently, Firefox was using a quite primitive JavaScript implementation. Avoiding stopping the world for GC is well-understood, but is only implemented when it seems important, because it involves a bunch of effort to implement. Even people implementing runtime systems are too lazy to implement all of the techniques they could use, when they aren't noticing performance problems that could be solved with those techniques. People don't choose a web browser based on whether it pauses with complex JavaScript; or, rather, they didn't until recently.