I am basing my answer on the Oxford Dictionary.
The differences between the three words are as follows:
Epithet— an epithet is “an adjective or phrase expressing a quality or attribute regarded as characteristic of the person or thing mentioned.” In other words, an epithet is any descriptive word expressing a quality about something. In Oxford’s example, “dirty” is an epithet:
“Old men are often unfairly awarded the epithet ‘dirty.’ ”
You would not replace “epithet” in that sentence with “sobriquet” or “moniker.” Here’s why:
Sobriquet— sobriquet is merely another word for “nickname,” and a nickname is “a familiar or humorous name given to a person or thing instead of or as well as the real name. “Dirty” is not a nickname but a descriptive adjective expressing an attribute—an epithet. Whereas an epithet specifically describes a quality or attribute about the one to whom the epithet is attributed to, a sobriquet is simply a name other than a particular person’s proper name. For example, “Bobby” can be considered a sobriquet for one whose proper name is Robert. “Moniker” is the simplest to understand.
Moniker— moniker is merely an informal word for “name”; that is, something or someone’s proper form of address. Thus, you would use “moniker” like this:
“Mark Twain’s real moniker is Samuel Langhorne Clemens.”
Hope I’ve explained the negligible difference between the three words. Remember, these definitions are Oxford’s.