Perhaps the tags have not been de facto treated semantically by existing practices. There’s a great deal wrong with the tag soup pervading the web. Current convention doesn’t mean they can’t have semantics.
Potentially they could have semantics in the future, but right now they don't. If you make a user agent that relies on them having those semantics, that user agent will misinterpret a lot of web pages.
I can create CSS to style the two tags accordingly, and in within my own work I can make them mean different things to the tools I use to create and manage html.
There are only two hard problems in programming: cache invalidation and naming. When programmers give something a name inconsistent with it's behavior, it's going to cause a problem.