The fully-autonomous route runs head-first into the inevitable, messy problems with software: security, maintenance, feature creep, complexity, unreliable networks etc. In theory, humans could nail all of these in car software. In practice, it's highly unlikely. The software industry can't even get basic security for IoT devices right.
The human-in-the-loop route runs directly into the only problem more daunting than reliable software: human nature. Human overrides for self-driving cars that need to be activated in a timely manner will not work. The drivers won't be paying enough attention to react in sufficient time. Note that overrides add even more complexity to an already fantastically complex system.