It's a "null list" not a "null string". You can use a null string:

% s=''
% ls $s^/x

but not a null list (like using null in many lisp list operations, or the difference between strcat of nil and strcat of ""):

% s=()
% ls $s^/x
rc (-/bin/rc): null list in concatenation

A completely unset variable is a null list. Also, `{...} returns  a list (of words) not a string,
hence the diagnostic in that case.