I had very similar thoughts about this. I was actually thinking to start from implementing support for loading values for the parameter from a query, as it serves both use cases. While it's cucumbersome, you can implement the static list as a "static" query:
SELECT 1 as value, 'V1' as name
SELECT 2 as value, 'V2' as name
But you're welcome to implement the "enum" first as I believe from implementation point of view, it will be easier.
This along with the global/dashboard parameters, keep leading me to the idea of having a dedicated place in Redash to define parameters. So you can have definitions for parameters in one place, which you can reuse in queries. This way you need to define if a parameter is global only once, or edit the enum only once.
The user should still be able to define an "adhoc" parameter in a query, but he can also choose from existing ones.
What do you think of this?