Excellent point. Advertisers don't act unilaterally to content based on morality they came up with themselves. Ultimately they are concerned with the perception of their brand by the same people who visit the website and experience the "offensive" content.
The people who are asking for the offensive content to remain on the site are not asking for "free speech" because Reddit isn't free. They're asked for "sponsored speech" -- they want the people who pay for the servers (directly) to sponsor their hate speech, or the hate speech of others.
If this is how Reddit would like to run things, it should become a non-profit and operate on donations. I'm a member of three websites that feature message boards and operate like this. No ads, no data tracking, all funded by donations. The rules vary in strictness among them.