The driver's current position is a column, not a row
Dispatch needs the latest position of every available driver, and it needs it now. A row appended to ride_tracking every few seconds would mean finding the newest per driver on every dispatch query. Two columns overwritten in place make that a plain index scan. The history is not lost — ride_tracking keeps it, but only during a ride, which is the only time anyone needs the path.