There is no difference between using a secong argument which is a member of $PrintForms and using the option FormatType. If the second argument is used, the option value is ignored.
The reason both exist is historical. In V1 and V2, ToString had no second argument, and its options were documented to be equal to that of OpenAppend. In V3, the second argument was added. This is partly because it was by far the most important option that could be given to ToString, and also that OpenAppend started having options that really didn't make sense for ToString (e.g., BinaryFormat). While the documentation continued to state for many versions that it could take all the options of OpenAppend, all the "new" options were silently ignored.
[I busted out a copy of The Mathematica Book, 2nd Edition, just to make sure my historical reconstruction was correct. :)]
Optionform is the actual implementation and the second argument version unravels to it. Consider:SetOptions[ToString, FormatType -> CForm](note that this causes some funky output effects. Reset it by replacingCFormwithOutputForm). Although the second argument does seem to take precedence over the option version. Good find. $\endgroup$SetOptions[ToString, FormatType -> CForm], but nothing funky happened.ToStringjust converts everything toCFormnormally (Mathematica 10.3 Mac OS X 10.10). Maybe I'm missing something? $\endgroup$ToStringis used. Just a preemptive warning to anyone trying that and later being confused as to why things are displaying differently from expected. $\endgroup$