I see you have FSUIPC as an example of "separate versions", but of course, in fact, FSUIPC3 supported all the previous versions of FS back to FS98, even including CFS1 and CFS2.
This was getting pretty messy though. The common code concerning user facilities was fine, but the "offsets" interface was becoming unwieldy, with multiple tables directing code off into the most appropriate way of reading or writing each element of data for each version of FS. I spent a lot of time on each FS release not only hacking into FS but also making the resulting structure as efficient as possible where it mattered.
Even so, if FSX was to be another similar growth from FS9 and FS9 was from FS8 etc, I would have just extended the tables and added whatever new code was needed. I'd rather maintain one lot of code than two, and FSUIPC3 will unfortunately still need my attention for several years, I reckon. Believe it or not I still get queries for FS2000 users! And of course there are still plenty of FS2002 ones.
The deciding factor in FSX, which effectively forced a separation, was SimConnect. At last MS were doing what I had been jumping up and down asking them to do for seven years or more!
The change for FSUIPC from foraging into FS's innards to using SimConnect was total. Well, at least for 95% of the stuff -- the other 5%, currently hacked, is still being negotiated.
There was really no way to force such a completely different way of doing things into FSUIPC3. I would have still been struggling!
Regards
Pete