There are many choices at play here, some may even may live further away to offset the cost of living or have a bigger back yard etc. I am sure that many do this in the cities.
But all things being equal if you are wage earner, you generally get paid by the hour and thus time spent at work at the companies need or request, should be paid for. If you cannot leave your job on time, then you should be paid for that time.
Some things are just inflexible in any workplace, both from an employee's and an employer's perspective, and a legal one.
Now those fortunate people who are salary earners, they get to negotiate a little more. However generally (unless they have a flexible agreement), there is still hours of work which are committed to.
All others like contractors etc fall into a different pile.