I use the first style you gave:
Options[tListPlot]=Join[
Options[ListPlot],
Options[tLegend],
{
Rule[ShowLegend,False]
}
];
The function is then defined as
tListPlot[data_,options:OptionsPattern[]]:=...
I don't see any reason to use SetDelayed (:=) in this context. EDIT As Brett Champion mentions in the comments, the default options for
System`Plot
will change if you use SetOptions on Plot. Hence, if you want your custom plot to always have the same options as Plot, use :=. I would prefer to specifically change the options for my Plot separately, so I would still use simply Set (=).
You might also want to check out this instructive question on Options in custom functions: Functions with Options