The cause of the version number discrepancies is probably because many development tools makes version numbers a pain.. or at least non-trivial thing to maintain. More often than not, it is an option hidden away in some dialog, and assuming you'd want to script it, that bit of data can be stored in some part of the project that does not monitor changes as well as a common source file would. Which then makes setting up a build an annoying task of closing the development environment, running your version update script, and then restarting the application so you can build the program with the correct version number.
Ideally, you'd want to just be like 'ok, look in VERSION or some actual source file for the version definition' and never ever have any more fuss about it. But in practice, you tend to have to do a manual rodeo of configuring it every single time assuming you can't afford spending a good afternoon just setting up a configuration script and other workflow that doesn't somehow blow up your unhappy IDE in the process.
The only time it ever seems to work fine is if you use all the tools from a single developer, which means they also can do their own silly auto-versioning logic to bump version and build numbers all over the place. But in practice, very few products (especially free tools) use Microsoft products for their entire workflow.
(Caveat: Maybe modern products are better about automating version stuff from a cental location, buuuut I've never ever seen it be painless...)