Blame Google for that one - Chrome started the crazy-fast browser version numbering that's now in vogue. Chrome went from v24 to v31 this year.
I think it's partly security-through-psychology; if Joe User's installation quickly winds up three versions behind, he'll be more motivated to update or to allow an update.
A lot of software is developed via some sort of agile software process these days. This means a new version of the software quite regularly, released on a time basis rather than a feature basis. This is what made version numbers meaningless. There are three common solutions:
time based: Ubuntu 12.04
increment the major number: Chrome 31
increment the minor number, never or rarely changing the major numbers: Linux 2.6.39
Major releases break the API, so programs that depend upon them may not work. Minor releases add or improve features while preserving existing functionality. Patches fix bugs.
This is exactly why having version numbers is important. Even if the number becomes arbitrary, it's existence is necessary to build dependency trees.
Aside: I'm not certain, but it seem as though Firefox does have a major.minor version scheme: my user-agent reads "Mozilla/5.0 ... Firefox/25.0"; Firefox 5.25 is probably the most correct.
Most, if not all releases of Firefox have minor API changes. Sometimes it's visible via HTML, sometimes they are only visible to plugins. By semantic versioning, 25.0 is the correct version.
Because the version of Firefox increments by one every 6 weeks, and whatever features are ready get included. This is a over simplification of the process. For more info you can read this: https://wiki.mozilla.org/Release_Management/Release_Process.
Because of Chrome. Until it came along version numbers meant something. Now a major version just means 6 weeks has passed since the last major version.