Teoria:
Z - są podawane parametry startowe serwera, jest to m.in gra, ilość slotów i jeszcze kilka innych rzeczy.
Z + są podawane CVARy, które zostaną "wpisane" w konsoli serwera, gdy ten zostanie uruchomiony, czyli bez różnicy czy wpiszemy je w linii startowej, czy w server.cfg (poza tą, że server.cfg na starszych binarkach da się pobrać z serwera i podejrzeć jego treść)
Praktyka:
Gdy serwer nie rozpozna parametru podanego mu z -, potraktuje go jako cvar. Gdy nie rozpozna cvaru (z +) potraktuje go jako parametr startowy.
Jednak jest tu jeden mały szkopuł... nie zadziała to dla kilku parametrów
Już tłumaczę dlaczego: plik hlds_run, którym uruchamiamy zwykle serwer jest tak naprawdę skryptem, który wykonuje kilka podstawowych operacji i uruchamia nasz właściwy serwer w zależności od posiadanego procesora. Właściwy serwer kryje się pod plikiem binarnym hlds_i386 dla 32 bitowych systemów i hlds_amd64 dla 64 bitowych. Skrypt ten pobiera kilka z parametrów, m.in wybór binarek serwera, autorestart, debug, condebug... I podanie tych parametrów z + zamiast - spowoduje, że nie będą one działały wcale. Bo skrypt sprawdza tylko parametry z - na początku.
Także po części BOK pukawki miał rację, ale w przypadku autorestartu: +autorestart nie robi ABSOLUTNIE nic. Jeśli ktoś ma serwer, który po paru sekundach wstaje to albo w panelu hostingu jest specjalny monitoring serwera, który spowrotem go uruchamia, albo jest to na tyle mało znaczący błąd, że -autorestart daje radę.