server.cfg should always be exec'd automatically by the server when it starts. I am not sure if it is executed upon map chance, but it can easily be verified by changing a map with changelevel and search for "Loaded server.cfg" or something similar.
A good practice when launching the server is to not directly forward +parameters, but instead put them all in the server.cfg file. If the server e.g. is unstable, instead of restarting it, you can either simply "exec server.cfg", "map <map>", and in special cases "killserver"; avoiding "exit". I think RCON is still active even when the server is "killed" but not terminated, which is mostly why I recommend this.
Comments
A good practice when launching the server is to not directly forward +parameters, but instead put them all in the server.cfg file. If the server e.g. is unstable, instead of restarting it, you can either simply "exec server.cfg", "map <map>", and in special cases "killserver"; avoiding "exit". I think RCON is still active even when the server is "killed" but not terminated, which is mostly why I recommend this.