The following patch can solve the issue and destroys no existing tests (parenscript.tests:run-tests).
However, I'm afraid that it is ad-hoc...
diff --git a/src/macros.lisp b/src/macros.lisp
index 986c283..ad0eb00 100644
--- a/src/macros.lisp
+++ b/src/macros.lisp
@@ -334,9 +334,15 @@ lambda-list::=
(assert (evenp (length args)) ()
"~s does not have an even number of arguments." `(setf ,args))
`(progn ,@(loop for (place value) on args by #'cddr collect
- (aif (and (listp place) (gethash (car place) *setf-expanders*))
- (funcall it (cdr place) value)
- `(ps-assign ,place ,value)))))
+ (progn
+ (when (atom place)
+ (setf place (ps-compile place))
+ (when (and (listp place)
+ (eq (car place) 'ps-js:funcall))
+ (setf place (cdr place))))
+ (aif (and (listp place) (gethash (car place) *setf-expanders*))
+ (funcall it (cdr place) value)
+ `(ps-assign ,place ,value))))))
(defpsmacro psetf (&rest args)
(let ((places (loop for x in args by #'cddr collect x))