I think I've found the problem and a work-around.
If you look at the python.el file, you will find this function to determine the path to the python executable:
(defun python-shell-parse-command () ;FIXME: why name it "parse"?
"Calculate the string used to execute the inferior Python process."
;; FIXME: process-environment doesn't seem to be used anywhere within
;; this let.
(let ((process-environment (python-shell-calculate-process-environment))
(exec-path (python-shell-calculate-exec-path)))
(format "%s %s"
;; FIXME: Why executable-find?
(executable-find python-shell-interpreter)
python-shell-interpreter-args)))
(BTW - the FIXME notes are in the code - they are not my comments)
Anyway, the problem is the executable-find returns an unquoted fully defined path, which in turn is passed to the shell and creates the "invalid argument" error. executable-find (defined in files.el) in turn calls locate-file which has the same problematical behavior for paths with embedded spaces. The real fix is probably to correct locate-file, but I'm not at all familiar with the emacs code base to even remotely guess at the broader consequences of changing this. Perhaps there should also be a check if the code is running on a Windows system. I really don't know.
So, here's the workaround. Change the format statement to add the quotes you need
(format "\"%s\" %s"
Now the shell opens error-free.
UPDATE:
The emacs team replied to my bug report pointing out the correct way to fix this is with the function shell-quote-argument which handles the differences between OSs.