The difference is never super high, but it is higher than necessary. Why is that the case?
Because there is no law that requires the true rates to be perfect reciprocals of each other. We would expect them to be very close, but they need not be.
The true rate in each direction combines the true rate as determined by numerous market actors weighted by how much of the trades they set the price for. Different actors can set the price for more trades in one direction than another and so get weighed more for that direction.
Consider, for example, two traders (or two markets) disagreeing over the "true" rate. If one trades mostly in one direction then its idea of the rate should be more heavily weighted in the true rate for that direction. But if the other trades more in the opposite direction, then its idea of the rate should be more heavily weighted in that direction. As a result, the "true rates" in the two directions can be different.
Note that you may think that surely every trade is in both directions since if one party is going in one direction, the other party must be going in the other direction. This is wrong. Consider an apple market where the prices are not changing and you can always buy an apple for $1 and sell an apple for $0.90 -- here, every "buy apples for dollars" will be at 1 dollar/apple and every "buy dollars for apples" will be at 0.9 apple/dollar -- there are buys and sells based on who chose the timing of the trade.
Every trade has a "maker" who sets the price for the trade and a "taker" who sets the timing of the trade. The trade takes place when the taker issues an order that matches an existing offer already placed by the maker.
If the party who chose the timing of the trade is going from USD->EUR, that is a USD->EUR trade that goes into the USD->EUR rate. If the party who chose the timing of the trade is going from EUR->USD, that is a EUR->USD trade that goes into the EUR->USD rate. You generally pay a premium for getting to choose when the trade takes place.
The rates are made "true" rates by backing the spread out of the observed rate. This is the methodology that Refinitive uses, which ultimately becomes the Morningstar data.
Let's try a somewhat ridiculous hypothetical:
There are only two price setters in the USD<->EUR market, Alice and Charlie. Alice thinks the true rate is 1.0 and prices her offers (in both directions) accordingly. Charlie thinks the true rate is 0.997 and prices his offers (in both directions) accordingly.
If Alice placed 100% of the USD->EUR offers that were taken, then the true rate will be reported as 1.0 for USD->EUR and if Charlie placed 100% of the EUR->USD offers that were taken, then the true rate will be reported as 0.997 for the EUR->USD direction.