HTTP paths are not conceptually hierarchical at all; they're opaque strings.
People set them up that way in practice because they prefer thinking that way. Or, I guess, because they want to sort their URLs meaningfully. Does that happen?
That's a fair point. But the fact is that people do tend to set them up as hierarchies.
But maybe you're right that most people don't understand that, given how adversaries exploit stuff like "games.apple.com.foobar.hosting.tw". You wouldn't fall for that if you understood the system.
While they're not conceptually hierarchical, it's not fair to say that they are opaque strings either. "////" is not a valid HTTP 1.1 path, for example, and "" means "/"