Plot needs to hold its arguments. The first argument is an expression that needs to be evaluated for each sample point. If it were evaluated immediately, it might no longer be in a form suitable for substituting the sample points. Now, I don't know why, but it seems like Plot commits to the color scheme based on the number of plot expressions it initially sees. So, if you pass in a list, it seems like it'll count the number of items in the list and use that number to determine how many different colors to use. In your case, you've passed in a single expression (the Switch--remember, it's being held, so Plot has no idea that it will eventually evaluate to a list), so Plot (apparently--I'm really just guessing here) commits to a single color.
The most common workaround for situations like these is to wrap the expression you want to plot in Evaluate:
Plot[Evaluate[
Switch[key, "one", {Sin[x], Cos[x]}, "two", {-Sin[x], -Cos[x]}]], {x, 0, 2 \[Pi]}]
But you need to be careful with this strategy and ensure that after a forced evaluation the expression will still be in a form that Plot can use.