In my experience it's quite common that tag names can be confusing if taken literally, and it's always a good idea to check from documentation to know when to use which tag. In other parts of the world, unlike in US, major roads necessarily aren't named as "routes" either. As both major roads and streets are still roads then route=road tag sort of clears it up, doesn't it?

I guess it's difficult to come up with ideal tag names and generally it's considered more imporant that for ease of use similar kind of data would just have uniform data scheme.

You mention route=street tag, but that doesn't seem to exist really (has 6 uses at the moment). Also are there really renderers that render roads as (major?) routes only based on route=road?

I think waterway relations are similar to route relations as normally they also represent the waterway itself rather than a collection of related stuff.  Objects like the spring or (small) side streams more or less can be considered as parts of the same named waterway.

I'm also not a fan relations that gather related stuff as opposed to represent an individual geographic feature, but this is what they have currently documented for type=street. If objects of this type may return building as well then for me things still seem more reliable with type=route.