The problem is because when you use "CURRENT", it does the process using the map that you have open already, so the file is not "locked".
When you hard code the path, it opens the file again (as well as keeping it open in the CURRENT arcmap session), then crashes as the current session has the file locked.
If you hard code the path, close the mxd, and publish it, it will work without error, as long as you dont have the map open when it try to save, as this locks the file.
Only one process can access the mxd at once, if you are inside ArcMAP that locks the file, if you use "CURRENT" it uses the locks you have open already, if you hardcode it, it trys to open a new lock.
I cant explain it better sorry, hopefully that is ok.