> why doesn't add-to-list take a list value, why symbol?
That's its specific purpose: update the value
of a (list-valued) _variable_. It's all about
a variable - updating its value.
The doc is very clear:
https://www.gnu.org/software/emacs/manual/html_node/elisp/List-Variables.html
Please read the entire topic (node).