I don't know what causes the issue (which looks like a bug to me), but I generally find the best way to deal with exerting control over Import
not doing quit the right thing with HTML is to use the "XMLObject" element and use ordinary Mathematica functions on it, like so:
In[1]:= ImportString@
ExportString[
ImportString["a<span>b</span>c", {"HTML", "XMLObject"}] /.
XMLElement[
Except["html" | "body" | "p" | "li" | "table" | "tr" | "td" |
"br" | "ul" | "li"], {___}, {stuff___}] :> stuff, "XML"]
Out[1]= "abc"
It's kinda cumbersome to round-trip like that, but on the upside it's very flexible.
EDITed to strip out a wider range of tags.