Unfortunately, I believe it is because what they mean to say is he is no longer the French President (as if 'French President' was a single term), and attach 'ex-' in front of that term. Similarly for the 'Russian spy', which apparently is also a single term, rather than two terms.
"Ex-" binds tightly to the word in front of it because of the dash, but "former" allows "French President" to be the noun phrase being modified.
French ex-president is a bit less clear. There’s a little ambiguity about what kind of president is being referenced, but the article should provide that context.
"Renault sues French ex-President" would probably refer to Ghosn, not Hollande or Sarkozy.
french ex-president doesn't sound right to me, because that would mean a french person who is an "ex-president". Subtle difference, but to make a point let me stretch it out a bit. He could be an "ex-president" of anything, maybe an ex-president of a high school class, and just happens to be a french guy.
What they're trying to say is a person who is an "ex-president of france", so the "ex" prefix applies to "french president".
I'm not a native but to me it reads like the guy stopped being French.