it's the same, if Bayern don't want James then he will return to Real. Bayern have an option to buy James from Real Madrid at the end of his loan spell for 42 million euros which they will do becuase it's cheap.
Looking at the James deal, all recent reports says that he "hopes" to stay there (i.e hopes they exercise the option) and the Bayern execs essentially saying they will. So you were right that they had the choice to in this case.
Whereas on the Mbappe deal, it doesn't seem like it was ever an optional thing and just another condition in the contract.
This is why I fucking hate the football transfer system. So much grey area in how agreements are formalized, no standardization which lets the clubs agree to whatever the hell they want, and seemingly no central body to govern these things. Some countries have buyout clauses, some don't. Some agreements have "incentives" here and there. You can cheat FFP by making "loan purchases" as in the Mbappe case. And then you have that historical amount of fuckery in the Neymar transfer case simply because clubs have no leash in making deals. Just a huge fucking mess.
And that doesn't even go into how badly inflation has fucked the market and made it ridiculous, and how much this 'money game' cripples small clubs.
There is only one solution. Football needs a transfer cap and a salary cap. It needs a central body regulating transfers and trades. The way things are is so prehistoric and stupid, and those who have any say in the organization/development of this sport financially are complete idiots.
It's a beautiful game but an absolutely shite professional sport. There's plenty to hate about American sports leagues but if there's one thing they've done right it's managing the financial side of the game. Harder to do in a sport based in several countries with different leagues, but it simply can't continue without some sort of central ground.