This is a peculiarity of the functions in `scipy.optimize`. They all take the input as a tuple `args=()` (default). For a 1D model `args=(x,y)`, for a 2D model `args=(x,y,z)`. Internally in optimize, this tuple is passed to the derivative as well. So even for 1D models `y` is a required input. This should really be explained in the docs.
As a consequence, if I want to fit a polynomial with a non-linear fitter, then the method computing the Vandermonde matrix should also have the same signature. I am preparing a PR for this too as currently polynomial models error when passed to non-linear fitters.