hey,
I think the current possibilities to set parameters for steps is ok, the only thing I'm missing is application parameters for shared components, but this is a different story.
To your question: the parameter must be user input because otherwise you're not able to publish the process (because you will get a conflict, that it is never updated) and you also need it so that you're able to set it multiple times (means different values for different steps or server types etc.).
We use both options that jacky mentioned, but the first one is the one, we use the most, especially for shared components.
best regards
michael