Basically the script for creating Vichy France is somewhat flawed/railroaded - it was built with the assumption that Germany would do pretty much all the heavy lifting during a war with France and that things would follow a largely historical path.
In effect, the triggers for the fall of France chain start when the Germans take Paris and France is some percentage towards capitulation. If they are in a faction (idk if being with britain is necessary) they get an event to go Vichy and when they do France is divided up in a prescripted fashion
Italy gets (becomes owner, not just controller) of Corsica, Savoy, and Provence if they control is during the time of the Vichy France event + the Alps province if they control both Provence and the Alps.
Spain gets the midi Pyrenees (wrong spelling I know but I’m on my phone) if they control it. And we know the rest about the German occupation zone and the Vichy free zone.
So it usually works for most cases, but when things out of the ordinary occur like a Spanish invasion or a extremely competent Italy, it screws over everyone.
I’d expect additional checks/mechanics in the future to make the situation better, like maybe an early peace conference/conditional peace mechanic one day - but in the mean time you can block the Germans by taking Paris before they do. Sadly there isn’t much else availible as far as I know