Some people might think it is simpler to use `setq`. Some people might think it is more lispy. In reality, it is naive in the general case.

It is true that for some user options it does not matter. But for others, it does matter, and `setq` is the wrong approach for those options. So as a general rule, **`setq` is the wrong approach.**

If you use `custom-set-variables` or `customize-set-variable` instead of `setq`, or if you use the Customize user interface (e.g. `M-x customize-option`), then you are sure that any intended initialization or updating code that is needed for the option value will be automatically triggered and run as needed. If you use `setq`, this will not be done.