If you let people set prices some will set absurdly high prices. For good user experience those get filtered out. What gets left is the system that we currently have which is in fact price that is set by drivers—just not explicitly. When there's more drivers in the area, prices drop, when there are few drivers, prices go up. That's how it works and it makes little sense to revise the UI to present nonsensical prices (we'd always pick the lowest price of a certain threshold of driver rating) for the user to choose from in a list just to fit some arbitrary definition of contractor drafted by some dumb politician or lawmaker.
It's not really set by the drivers either, its set by the market. Uber is just a market maker. Prices too high and passengers won't use the service. Prices too low and drivers won't drive. The whole goal of Uber is to find the ideal price to maximize capacity.