Sorry, but I'm too much a a newbie to understand how the HoldAll attribute is the culprit. Note that the plot is produced with the code above. It is just that the legend is incomplete.
One other thing: I would like to get the equivalent (in Plot) of using Evaluate on plotfuncs, but without actually changing plotfuncs. (I.e., after Evaluate, even though it is within Plot, any globals in plotfuncs have been replaced. Illustration of the problem below.)