General release is best once you’ve tested the update on a broad enough cohort of users, same as having a beta. Automated and manual unit or spec tests catch some bugs, QA catches others, but there will be a few that slip through because you can’t account for every last use case.
Cars are fantastically complex machines. There’s a lot that can go wrong, so at this stage of their eng org growth it is best to roll out gradually and catch issues as they come up instead of pushing to everyone and having a widespread failure. Eventually as they scale the team and testing infrastructure I expect they’ll be able to release to more customers in each go.