Good question! I treat this as an exception to the physical separation principle. Sure, nothing is physically preventing a driver from leaving the line or cutting in line, but then the little one in the back won’t get their Happy Meal. ![]()
The pedantic solution would be something like driving_side=left for case 1 or service:lanes=drive-through| for cases 2 and 3, but it would result in some very unintuitive geometry in case 2. These are the easy cases. There are plenty of other common cases for which a single way simply can’t describe the geometry.
On a through street, the main benefit of the physical separation principle is that a data consumer wouldn’t have to do gymnastics to reconstruct lane guidance. But even though the drive-through is separated by a mere lane divider, I don’t think people normally think of it as a lane.