The media made a concerted effort back in the 1990s to change the colors from blue to red for Republicans.
If you go back and check, they used to be blue for Republicans and red for Democrats.
It happened on Election Day 2000. The mislabeling of the parties is vile and we should all refuse to use it.
There was a convention among political scientists to graph elections as blue for incumbent party and red for challenging party. (I worked in this field in the early 1980s). This carried over to election maps, which would usually show the incumbent in blue (regardless of party).
The breakthrough and change came due to the USA today map of George W. Bush's victory in 2000, when USA Today, which was the first (and only) newspaper to publish in color at the time, and loved reporting on things state-by-state put a double-page centerfold of the 2000 election results out in their newspaper. It was a unique map, instead of showing the results by State (which is how electoral votes are counted) it showed the results by county (which is meaningless in terms of vote counting). This was published in the middle of section A of their election special edition. It showed the geographic dominance of the Republicans, and how the Democrats were confined to a few densely populated urban areas and the coastal zones.
This was a unique way of looking at the election, it showed a lot of Red (Bush was the challenger in 2000, the incumbent party was Clinton's Democrats) and people really took to the map.
USA Today's ability to produce this map in a timely manner was a result of big improvements in computer database and GIS (Geographic Information Systems) technology.
The map was a hit. It was posted on a lot of office bulletin boards and referred to by many political commentators.
I believe it was that single map that started people referring to "red states".
At least, that's my theory and recollection.
A few other people have written about this, here's one article I found:
USA Today Uses GIS for Election Mapping
Here is an electronic version of that image: