An explanation I’ve seen, however, is that words associated with taboos can become offensive. Fuck, for instance, became offensive during a very prudish time. Shit and other words associated with using the loo are offensive because it is often considered poor taste and vulgar to talk about what one does on the toilet. Religious swears are considered offensive for fairly obvious reasons, at least for religious people.
To use your earlier examples, I find it interesting that “Oh my God” and “Jesus Christ” are much more common in public than words like fuck and shit. Why do you think that is? Presumably because society is generally non-secular (in public)?
I guess a related question is why you would be offended by curse words if you aren’t religious?