A basic rule of zsh is that you don't need to quote your variables, for example:
% data="single argument"
% print -l $data
single argument
One exception I know of is that if an argument must not be skipped even if empty, it must be double quoted:
% emptyarg=
% functon count() { echo $# }
% count $emptyarg
0
% count "$emptyarg"
1
However, if an argument contains certain special characters, it must be quoted or the shell gives an error. Why is that? It seems fragile. The content of my data shouldn't substantially influence how functions/commands run.