I believe you need to add all of Plot's options to pfunc as well, like this:
Options[pfunc] = Join[ Options[Plot], {"test" -> True, ...} ] I'd like to note that this is what builtins do as well. For example, Plot also carries all possible Graphics options. The downside is that any changes to the default options of Plot won't affect pfunc. The upside is that it will be possible to change the defaults on pfunc, and also that you get error reporting about invalid options for free.
There are some other things worth correcting: while Plot and Graphics accept options grouped into a list, as in Plot[..., {Frame -> True, PlotStyle -> Red}], many other functions don't.
So I'd write the function like this:
pfunc[x0_, plotopts : OptionsPattern[]] := With[{seq = Sequence @@ FilterRules[{plotopts}, Options[Plot]]}, Plot[x^2, {x, -x0, x0}, seq, PlotStyle -> If[OptionValue["test"], Red, Blue]] ] I also moved seq before your own PlotStyle option, to make the PlotStyle overridable.
Well, this is how I usually do ithow I usually do it, but since I don't have a lot of experience with options handling, I'm not sure it's the best way.