
A contract in ETH (or any platform for that matter) can only come to a reliable consensus if the information it is using to come to that consensus is solely internal to the system.
In the case of this, the driver and the passenger could collude to input "fake" information into the system, perhaps so that the driver gets more tokens or whatever. There is no way for the system to check, irrefutably, that the journey really was say 20 miles in distance, it could all be fake.
Even if you put a "black box" in the cab, you still cant ever be 100% sure that it wasn't tampered with, and so due to that uncertainly, the consensus can never be totally reliable.