Whether you adding or subtract results from dice, it tends to produce similar-looking distributions with different offsets. For instance 2d6 looks very like 1d6-1d6, except the former is centred on 7 and the latter on 0.
So, an ability contest where two contestants roll 1d20+bonus, and highest wins, can be seen as looking as
1d20 - 1d20 + (difference in bonus) > 0 and has a similar "triangular" probability distribution shape as
2d20 > 21 + (difference in bonus).
This means that initial small differences between the opponents have a larger impact on percentage points. The difference between a +0 and +1 advantage is around a 5% step, whilst the last bit of "lock out" where you go from a +19 to a +20 higher bonus than an opponent gives you a measly 0.25% step (but importantly goes from 1 in 400 chance of losing to no chance of losing whatsoever).
This can be turned into a relatively simple formula. If
P(n) is the percentage chance of winning an opposed contest, when you have a bonus
n better than your opponent:
P(n) = 100 - 0.125 * ( 20 - n ) * (21 - n )
(for n from 0 up to 21 ) OR
P(n) = 0.125 * (n + 19) * (n + 20)
(for n from 0 down to -20)