Note that one is 12.10 SR9 and the other is 12.20 SR2, so it makes sense that 12.20 happens after 12.10.
Highest SRs will have more bugs fixed.
I our case we will upgrade to 12.20 SR2 unless we see a clear showstopper during the validation process. If you don't need the latest features, probably 12.10 SR9 has more bugs fixed and is more stable.
Bugs fixed: I guess it depends on when they split their codebase and how many patches for 12.10 they took along in 12.20 before releasing. A short release timeline reveals:
12.10SR7 = 2017-06-27
12.10SR8 = 2017-08-18
12.20IR = 2017-11-14
12.20SR1 = 2017-12-18
12.20SR2 = 2018-01-22
12.10SR9 = 2018-02-12
so I would assume that 12.20IR has bugfix parity with 12.10SR8 or something. Or am I being too optimistic?
Exactly as you said, it is all when the development of the new version starts and how this cycle works. I cannot say when a new 12.x version is forked from the main branch, but I'm sure ghd can provide some insights here.
Even before Sense and the split between SR/FR, not all releases were incremental.
Also, some people prefer to wait for a more mature development (i.e.: higher SR number) rather than going to the last version. I'm often inclined to go for the latest available, unless it's a IR of a major version (say, QlikView 13.0).
That's the thing, if the release cycles loop over versions, meaning the current branch will never meet the previous until the next major release when everything is put together, again it's a matter of choice: more stable or more features. Until now, a "minor" version did have some new things but not all the bugfixes of the previous "minor" so for stability sake, a higher SR was preferred.
But if that's not the case and indeed, all minors have all previous versions bugfixes, it's a no-go: always the highest version.