I think allowing them but forcing companies to pay is a way to make them put their money where their mouth is. While I think removing them is good, removing them completely gives the opposing crowd something to yell about. If you allow them but then say, well you gotta pay to get the benefit, I think we'd quickly see them drop off, the proponents of non-competes would have little to no argument, and companies who really think they need them can just pay for them if they're so valuable to their business strategy.
If history's any indication, you can't give companies an inch. They'll take advantage of employee ignorance of the law, or do shady things with the payments under the logic that if the employee sues them for the money they can tie the case up in the legal system until they give up, or whatever other chicanery they can imagine to squirm out of having to pay.