UnsetMetadataPassedError can point towards the wrong method

### Describe the bug

When `enable_metadata_routing=True`, for a missing `set_score_request`, `UnsetMetadataPassedError` message states that a `set_fit_request` is missing.

### Steps/Code to Reproduce

```python
from sklearn import set_config
from sklearn.exceptions import UnsetMetadataPassedError
from sklearn.model_selection import cross_validate
from sklearn.linear_model import LogisticRegression
import numpy as np

rng = np.random.RandomState(22)
n_samples, n_features = 10, 4
X = rng.rand(n_samples, n_features)
y = rng.randint(0, 2, size=n_samples)
sw = rng.randint(0, 5, size=n_samples)

set_config(enable_metadata_routing=True)
# missing set_score_request
logreg = LogisticRegression().set_fit_request(sample_weight=True)
try:
    cross_validate(
        logreg, X, y, 
        params={"sample_weight":sw}, 
        error_score='raise'
    )
except UnsetMetadataPassedError as e:
    print(e)
```

### Expected Results

I would expect an error message pointing towards the missing `set_score_request`, and perhaps a less verbose message when only one metadata is passed. Something like:


'sample_weight' are passed to cross validation but are not explicitly set as requested or not requested for cross_validate's estimator: LogisticRegression. Call `.set_score_request(sample_weight=True)` on the estimator for using 'sample_weight' or `sample_weight=False` for not using it. See the Metadata Routing User guide...

### Actual Results

['sample_weight'] are passed to cross validation but are not explicitly set as requested or not requested for cross_validate's estimator: LogisticRegression. Call `.set_fit_request({{metadata}}=True)` on the estimator for each metadata in ['sample_weight'] that you want to use and `metadata=False` for not using it. See the Metadata Routing User guide...

### Versions

```shell
sklearn: 1.7.dev0
```

COMMENT:
True, I knew there must be edge cases here.

The fix for this particular case would be this patch

```patch
diff --git a/sklearn/model_selection/_validation.py b/sklearn/model_selection/_validation.py
index 056248247d..57461b2216 100644
--- a/sklearn/model_selection/_validation.py
+++ b/sklearn/model_selection/_validation.py
@@ -378,19 +378,8 @@ def cross_validate(
             # `process_routing` code, we pass `fit` as the caller. However,
             # the user is not calling `fit` directly, so we change the message
             # to make it more suitable for this case.
-            unrequested_params = sorted(e.unrequested_params)
             raise UnsetMetadataPassedError(
-                message=(
-                    f"{unrequested_params} are passed to cross validation but are not"
-                    " explicitly set as requested or not requested for cross_validate's"
-                    f" estimator: {estimator.__class__.__name__}. Call"
-                    " `.set_fit_request({{metadata}}=True)` on the estimator for"
-                    f" each metadata in {unrequested_params} that you"
-                    " want to use and `metadata=False` for not using it. See the"
-                    " Metadata Routing User guide"
-                    " <https://scikit-learn.org/stable/metadata_routing.html> for more"
-                    " information."
-                ),
+                message=str(e).replace("cross_validate.fit", "cross_validate"),
                 unrequested_params=e.unrequested_params,
                 routed_params=e.routed_params,
             )
```

The same patch can fix the other functions in the same file. Wanna tackle this @StefanieSenger ?

Labels: Bug, Metadata Routing