AUC differences between cross_validate and cross_val_predict

### Describe the bug

I am working through a binary classification problem and I need to generate an ROC curve. When comparing the performances of the function cross_validate (which returns performance metrics), with cross_val_predict (which can return probabilities), the AUC can vary largely from these two functions when being given the same model and data.

This is especially difficult to work with when cross_validate returns much better roc_auc values than cross_val_predict.

This has previously been discussed here:
https://stackoverflow.com/questions/45074392/differences-in-roc-auc-values-with-cross-val-score-and-cross-val-predict

### Steps/Code to Reproduce


model = LogisticRegression(class_weight='balanced', penalty='l1', solver='liblinear')
scores = cross_validate(clone(model), x, y, cv=5, scoring="roc_auc")
print(scores)

predictions = cross_val_predict(model, x, y, cv=5, method="predict_proba")

print(roc_auc_score(y, predictions[:, 1])






### Expected Results

1     roc_auc  0.727598  0.056468

0.7275985663082437

### Actual Results

1     roc_auc  0.768172  0.056468

0.7275985663082437

### Versions

```shell
System:
    python: 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)]
executable: C:\envs\vision\python.exe
   machine: Windows-10-10.0.19041-SP0

Python dependencies:
          pip: 22.1.2
   setuptools: 61.2.0
      sklearn: 1.0.2
        numpy: 1.21.5
        scipy: 1.7.3
       Cython: None
       pandas: 1.3.4
   matplotlib: 3.5.1
       joblib: 1.1.0
threadpoolctl: 3.1.0

Built with OpenMP: True
```

COMMENT:
According to the [docstring](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html) in `cross_val_predict`:
> Passing these predictions into an evaluation metric may not be a valid way to measure generalization performance. Results can differ from [cross_validate](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_validate.html#sklearn.model_selection.cross_validate) and [cross_val_score](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html#sklearn.model_selection.cross_val_score) unless all tests sets have equal size and the metric decomposes over samples.

More in the [documentation](https://scikit-learn.org/stable/modules/cross_validation.html#obtaining-predictions-by-cross-validation):
> **Warning:** Note on inappropriate usage of cross_val_predict
The result of [cross_val_predict](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html#sklearn.model_selection.cross_val_predict) may be different from those obtained using [cross_val_score](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html#sklearn.model_selection.cross_val_score) as the elements are grouped in different ways. The function [cross_val_score](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html#sklearn.model_selection.cross_val_score) takes an average over cross-validation folds, whereas [cross_val_predict](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html#sklearn.model_selection.cross_val_predict) simply returns the labels (or probabilities) from several distinct models undistinguished. Thus, [cross_val_predict](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html#sklearn.model_selection.cross_val_predict) is not an appropriate measure of generalization error.

Labels: Bug, Needs Triage