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.
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
None of these solutions work well.
[1]: http://semver.org/
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.
Version numbers don't have to mean something. They're just numbers, after all.