My almost 5 year old says quite a few bad words. She will use one over and over, and then seem to grow out of it. I've tried not reacting, basically that's what I was doing a year ago. I've also tried the Playful Parenting approach. It's like anything else, it seems like it might make a little difference, but the behavior takes awhile to fade away--it's almost like they get tired of it, but my daughter will still find new words to say and will say them over and over.
Lately there are times that I've started getting angry and telling her she's old enough not to say it and I don't want to hear it. It's not the bad words, necessarily, it's that when she is angry, she will call people names using those words, and that's just not acceptable.
In any event, she started preschool a year ago, and her language was much worse at that point, but she seemed to truly understand that she couldn't say it at school. So maybe you can explain to him that he cannot use those words at your father's home and maybe your father can also say something about it to him if he hears it. I know others have told their children that they don't mind if they say certain words, but other people are not going to like it and they should be prepared for a negative response. Of course, some children seem to like getting a negative response, so I don't know, but my daughter tends to be more cooperative at school than at home.