I had been thinking about that tweet actually, cause to my mind, it's got two problems: it came out too soon after the match and doesn't show which company provided these xG values. Both issues come from the same thing: the xG value of shots is determined manually by analysts watching games. (Or at least, that's my understanding.) I am not sure how complex xG models are (for example: how many of the complexities of your two examples are taken into account?), but either way, those analysts are coding situations in a database while watching. That means that there is a level of subjectivity and that error is possible. To my knoweldge, companies compensate for those risks by having at least one other analyst re-watch the game afterwards and verify the coding - but so you need to know which company produced the stats (they might have different quality levels), and you either way can't have reliable xG stats until the validation has taken place.
Other than that, xG doesn't record when a situation
just failed to become a chance (e.g., the assist for a great tap-in is just off), so apart from issues with xG calculations, it anyway should not be used on its own to determine how a match was played. (Which no serious analysts would ever do of course, but for the public, xG undeservedly has become some sort of shorthand for overall match analysis.)
I'll end my xG rant there.