Having a fixed FPS doesn't take into account the differing processing power of different devices, the way some browsers render the page using hardware acceleration (or not), the way in which available processing resource varies over time, and plenty of other variables which will ultimately determine the maximum FPS that could potentially be delivered for a given animation at a given moment in a given browser in a given device.
Ideally the FPS should vary dynamically and only be *capped* at a threshold above which a higher FPS would be of no perceivable value - AFAIK this is how CSS3 animations work in browsers that support it, but alas I don't think it's (currently) possible to do this kind of dynamic animation throttling in JS, which is why jQuery takes the rather basic fixed FPS approach.
However, I have recently discovered an excellent jQuery plugin which stealthily upgrades certain .animate() calls to use CSS3 animations where possible, and the difference in animation smoothness can be quite impressive - see
http://playground.benbarnett.net/jquery-animate-enhanced/