Because Batman is a title, Iron Man is an adjective and noun, and Spider-Man is a hybridization.
@Commander Peanuts, BIG BRAIN
It’s called a hyphen you uncultured swine
@The Unknowns, and # is pound.
@Implicit88, or an octothorpe
Because Stan Lee wanted “Spider-Man” to be visually distinct from “Superman”
Fun fact: Spider-Man can actually hear when someone is saying his name with or without the hyphen and will call people out on it. He’s very particular about the hyphen.
Different universe, different rules
Because it's not his last name. It's not like his name is "Phil Spiderman"!
@Suicide Squad Sucks, he's right. It's Peter Spider-Man. Or possibly Peter Parker-spider-man