It depends entirely on your target goal.
If your target goal is something like "maximization of worker pay",for example (really, i'm not suggesting that's what you want, it's just a convenient example), then no, there will never be a compelling argument for non-competes, because they always stand in the way of that particular goal.
This is because costs by employers can always be expressed without non-competes somehow to within some reason, and not get in the way of that goal (but may harm others).
For example - there are fields where large amounts of on-the-job training is paid for by employers.
Certainly they don't get nothing out of it in the end, but they have upfront costs too. It is more frontloaded cost wise, such that if the employee leaves immediately after training, the employer would lose money.
The literal training cost can simply be expressed as an actual penalty for leaving rather than a non-compete.
But the loss of time and need to train someone else (IE the time during which you would have made more money on the person who just left) is harder to value as a penalty (since it depends on what your profit would have been, which is probably variable, and lots of other things). So that is often expressed as a non-compete.
But that would still stand in the way of "worker pay maximization", so that particular difficulty is not compelling for that goal (IE you could just assign a value to it and deal)
Similarly, there are fields where there are not enough people, and great upfront cost may be spend in acquiring people (doctors in rural areas, etc).
Normally they would non-compete them and give a significant hiring bonus.
You can also express this as a penalty, but it still puts you out a doctor for the time it takes to recruit someone else, etc, which is bad for the community.
But not for worker pay!
If you go for worker pay maximization, them taking a 250k bonus to go work in that area, then leaving a year later (or whatever), maximizes their pay. It also likely forces the community to pay more to the next person to have that not happen!
So again, if your target goal is maximization of worker pay, no, I think there is no compelling arguments for non-competes.
If you switch your goal to say something like "maximization of production of useful things", maybe you could get to more compelling argument, because constant job hopping by everyone, while maximizing worker pay, probably interferes with maximizing the production of useful things.
Or if you introduce some balance of goals, maybe.