This is probably because Firefox (and Chrome) clamps the setTimeout interval of background tabs to 1 second to improve performance.
Huh? Is that new? Can I turn it off?
It was introduced in Firefox 5 [1]. You can change it in about:config by tweaking "dom.min_background_timeout_value" to a lower value (in milliseconds).
Actually requestAnimationFrame is limited more (possibly even entirely paused) as it assumes that if the tab isn't visible, no animation needs to be requested