Here are four ways to adjust your example so that the earlier value assigned to name a is re-used in the earlier exploration, even following reassignment to a.
I am leaving out simple mechanism of simply having the execution group that calls Explore also do the desired assignent to a. In that case you could just rexecute that group, recreating the exploration while reassigning a as wanted.
The next four ways involve being able to immediately manipulate the Sliders in each of the explorations, without reinvoking Explore, and have them respect the value of a when the explorations were created.
1) Use uneval quotes and an eval call, so that the call f(x,y) evaluates and produces the returned expression in which the current value of a has replaced the instance(s) of a. Explore_problem_ac1.mw
2) Use an expression rather than a procedure, to define f. In recent Maple versions the assigned name a in the expression will get resolved to its value when Explore is/was called. Explore_problem_ac2.mw
3) Call Explore on a procedure call of a procedure that takes a as an additional argument. (It works for the same reason as 2) above.) You could alter your procedure f, but since that might be awkward for you I show how you can create a wrapping procedure F. Explore_problem_ac3.mw
4) It's inefficient to F, and better to rewrite f. So here it is with rewritten f instead. You may find this the simplest way. Explore_problem_ac4.mw
I suppose that the example you attached in a Reply to Carl's Answer might be merely a toy example, and that you actual work might be more involved. If, say, some more involved procedure f cannot be invoked with arguments nonnumeric x and y (due to conditionals needing to resolve, etc) then approaches 1) and 2) may well not work for you and 4) might need Explore(plot('f'(x, y, a)), y = 0 .. 10) instead.