> Why is this necessary?

It would allow passing sample weights to the estimator. Or something else in parallel to the feature data. (I note that sparse matrices have `__len__` but raise an error when `len(..)` is called on them, so it won't be much use for them!!)

And yet, it has no less benefit in grid search. So assuming it's useful, it should be available in both. Although your refactoring is very neat, I think leaving two implementations of `_cross_val_score` and `fit_grid_point` means that it's too easy to include a feature or fix in one but not the other, as you see here. I'd rather see them combined.