It helps to remember that, even when dealing with random variables, we're still allowed to move terms from one side of the (in)equality sign to the other (and change their sign). So this: $${\rm d}20 + M_A > {\rm d}20 + M_B \tag1$$ is equivalent to this: $${\rm d}20 - {\rm d}20 > M_B - M_A \tag2$$
(In high school math education, this "moving terms from one side to the other and changing their sign" is often presented as "adding (or subtracting) the same term from each side", followed by canceling out terms that sum to zero. Which is fine too, except that we need to remember that the two "\${\rm d}20\$" terms above are not the same — they represent separate rolls and don't cancel out when one is subtracted from the other! It might be clearer to mark them explicitly as, say, "\${\rm d}20_A\$" and "\${\rm d}20_B\$" to make it clear that they are actually different random variables, but that's not how dice rolls are usually notated in RPGs.)
Now, what's \${\rm d}20 - {\rm d}20\$ (keeping in mind that, as noted above, these two "\${\rm d}20\$" terms denote separate die rolls)? A moment's thought will show that it's the sum of \${\rm d}20\$ and \$-{\rm d}20\$, where the latter is a die that rolls a uniformly distributed number between \$-20\$ and \$-1\$. In other words, a \$-\mathrm d20\$ is the same as \${\rm d}20 - 21\$, and so: $${\rm d}20 - {\rm d}20 \overset d= 2{\rm d}20 - 21$$
(Here, "\$\overset d=\$" means "equal in distribution". The two sides here are obviously not the same random variable — if you first roll \${\rm d}20 - {\rm d}20\$ and then \$2{\rm d}20 - 21\$, you will not usually get the same number from both rolls! — but they do have the same distribution, i.e. the same probability of rolling any given result.)
Substituting this into inequality \$(2)\$ above, we can thus see that \$(1)\$ and \$(2)\$ are equivalent (in distribution!) to: $$2{\rm d}20 - 21 > M_B - M_A \tag3$$ or, equivalently: $$2{\rm d}20 > M_B - M_A + 21 \tag4$$
So, what did we learn from this (besides some hopefully useful algebraic rules for dice rolls)?
One obvious conclusion is that the individual modifiers for players A and B don't matter — all that matters is their difference. Giving +1 to player A is equivalent to giving -1 to player B, and vice versa. And giving +1 to both players doesn't change the odds at all.
Also, the separate d20 rolls don't really matter, either — you can implement the same mechanic with a single 2d20 roll.
Also, for reference and intuitive understanding, here's what a roll of 2d20 − 21 (or, equivalently, d20 − d20) looks like:

The distribution is mirror symmetric around zero and shaped like an upside-down letter V, increasing linearly from 0.25% at -19 up to 5% at 0, and then decreasing linearly back to 0.25% at 19. (Don't ask me why AnyDice chooses to place the tick marks on odd numbers in the plot.)
It may also be useful to look at the probability of rolling at least a given target number (i.e. difference of modifiers) on such a roll:

As we can see, when both players have the same modifier, the probability of either player winning contested dice roll is the same (47.5%), with a 5% chance of the dice rolling the same number and the tie breaker rule having to be applied.
As the difference in the modifiers increases, the chance of the player with the higher modifier winning of course increases. Going from +0 to +1 increases the win rate (ignoring ties) for the player with the higher modifier by 5%, from 47.5% to 52.5%. Increasing difference further increases the win rate further, but less (in fact, exactly 0.25% less) for each further point of difference.
The chance of rolling a tie also decreases by 0.25% for each additional point of difference between the modifiers. This is not a coincidence: changing the difference between the modifiers changes the threshold where the 2d20 roll goes from a win to a tie, and then from a tie to a loss. So changing the difference by +1 turns what would've been ties into wins, and some of what would've been losses into ties.
Here's a convenient table:
Difference in modifiers (MA − MB) |
A wins |
Tie |
B wins |
0 |
47.5% |
5% |
47.5% |
+1 |
52.5% |
4.75% |
42.75% |
+2 |
57.25% |
4.5% |
38.25% |
+3 |
61.75% |
4.25% |
34% |
+4 |
66% |
4% |
30% |
+5 |
70% |
3.75% |
26.25% |
+6 |
73.75% |
3.5% |
22.75% |
+7 |
77.25% |
3.25% |
19.5% |
+8 |
80.5% |
3% |
16.5% |
+9 |
83.5% |
2.75% |
13.75% |
+10 |
86.25% |
2.5% |
11.25% |
+11 |
88.75% |
2.25% |
9% |
+12 |
91% |
2% |
7% |
+13 |
93% |
1.75% |
5.25% |
+14 |
94.75% |
1.5% |
3.75% |
+15 |
96.25% |
1.25% |
2.5% |
+16 |
97.5% |
1% |
1.5% |
+17 |
98.5% |
0.75% |
0.75% |
+18 |
99.25% |
0.5% |
0.25% |
+19 |
99.75% |
0.25% |
0% |
+20 |
100% |
0% |
0% |
For brevity this just half the table, showing only the cases where MA ≥ MB. If player B has the higher modifier, just swap the player labels when consulting the table.