Without looking at the history of your example, it's likely that someone joined two segments of the road that had different name tags. So name=Main Street `name=Main Street` joined to name=High Street, `name=High Street`, in JOSM and Potlatch, becomes name=Main `name=Main Street; High Street. Street`. This should be corrected by splitting the way and tagging the part named Main Street as Main Street and the part named High Street as High Street.
It gets more complicated when a segment of road has more than one name. Here you'll want to place one name (usually the most common on-the-ground) in the name field, and use <a href=http://wiki.openstreetmap.org/wiki/Key:alt_name>alt_name</a> and other tags for other names, for instance name=Sixth Avenue official_name=Avenue `name=Sixth Avenue` `official_name=Avenue of the Americas.
Americas`.
I've also seen the route number included in the name, like name=Main `name=Main Street; United States Highway 66. 66`. This would be better handled as name=Main `name=Main Street ref=US 66.
66`.
And, just maybe, there are a few actual road names with semicolons.