A script addin can be configured. Is there a similar way to add configuration to a script-in-a-button (for example, a list of available browsers, or a list of sandboxes if Sandboxie is installed), or should each user simply edit some variables at the top of the script?
That's only for script add-ins.
Script add-ins can add commands which you call from a button, if you want a button that also has configuration.
Putting some vars at the top is probably the easiest way (for pure script buttons, not making use of scripted commands). You can get more complex by reading external config-files or by creating a dedicated script addin, that serves as configuration point for a button. The latter might be overkill, unless you have a greater number of buttons, which share the same configuration details.
Leos suggestion is also valid, though I wouldn't like a specific command to be configured elsewhere, as most commands can take their config directly on the command line.
To give an example of what I mean: In case you want to create a custom copy command called "MyCopy", it makes no sense to define source and destination in a script config, far away and totally separate from where you make use of "MyCopy". There might be situations where this is still a viable option of course (multi-line configs, lists, tables), but I see script configurations more to configure event-based scripted functionality, for which you have no other entry point to setup specific things.
From my perspective, commands should try to consume command line parameters, these fit to how you use internal DO commands and is common practice elsewhere as well.
Thanks once again, leo and tbone. What you say is all very clear. I will now set about learning systematically the mysteries of add-ins. Then I'll be able to evaluate which approach is better in the situation I was working on.