It is put in in lower case the first time, then the second time through, It converts it to upper case, and when the check is run to see if its there, it doesn't find it (I know its there, but upper and lower are treated as different cases)
The way to fix your problem is when you add the path, use all upper case
supppath3 =
UCase(ThisDrawing.Application.Preferences.Files.SupportPath)
If Not (InStr(1, supppath3, "G:\Arc\CAD System\Template") > 1) Then
ThisDrawing.Application.Preferences.Files.SupportPath =
supppath3 & ";" & "G:\ARC\CAD SYSTEM\TEMPLATE" ' ADDED THIS LINE