`IterativeImputer` skip iterative part if `keep_empty_features` is set to `True`

### Describe the bug

The mask is set to all True, so that the iterative imputation will be skipped.

https://github.com/scikit-learn/scikit-learn/blob/a4ebe19a95ffbb3cf6abf3e98d737d0d097f5de3/sklearn/impute/_iterative.py#L649-L651

### Steps/Code to Reproduce

```python
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer

imp = IterativeImputer(keep_empty_features=True)
X = [[np.nan, 0, 1], [2, np.nan, 3], [4, 5, np.nan]]
print(imp.fit_transform(X))
print(imp.imputation_sequence_)
```

### Expected Results

Should act the same as `keep_empty_features=False`

### Actual Results

```
# transformed X
[[3.  0.  1. ]
 [2.  2.5 3. ]
 [4.  5.  2. ]]

# imputation_sequence_
[]
```

### Versions

```shell
System:
    python: 3.9.16 | packaged by conda-forge | (main, Feb  1 2023, 21:38:11)  [Clang 14.0.6 ]
executable: /Users/xxf/miniconda3/envs/sklearn-env/bin/python
   machine: macOS-14.5-arm64-arm-64bit

Python dependencies:
      sklearn: 1.6.dev0
          pip: 23.2.1
   setuptools: 68.0.0
        numpy: 1.26.4
        scipy: 1.13.0
       Cython: 3.0.8
       pandas: 2.1.0
   matplotlib: 3.7.2
       joblib: 1.3.0
threadpoolctl: 3.5.0

Built with OpenMP: True

threadpoolctl info:
       user_api: blas
   internal_api: openblas
    num_threads: 8
         prefix: libopenblas
       filepath: /Users/xxf/miniconda3/envs/sklearn-env/lib/libopenblas.0.dylib
        version: 0.3.23
threading_layer: openmp
   architecture: VORTEX

       user_api: openmp
   internal_api: openmp
    num_threads: 8
         prefix: libomp
       filepath: /Users/xxf/miniconda3/envs/sklearn-env/lib/libomp.dylib
        version: None
```

COMMENT:
@xuefeng-xu 

When `keep_empty_features=False`
The output is:

```
# transformed X
[[0.03425361 0.         1.        ]
 [2.         2.47849272 3.        ]
 [4.         5.         5.03476137]]
 
# imputation_sequence_
[_ImputerTriplet(feat_idx=0, neighbor_feat_idx=array([1, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=1, neighbor_feat_idx=array([0, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=2, neighbor_feat_idx=array([0, 1], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=0, neighbor_feat_idx=array([1, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=1, neighbor_feat_idx=array([0, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=2, neighbor_feat_idx=array([0, 1], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=0, neighbor_feat_idx=array([1, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=1, neighbor_feat_idx=array([0, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=2, neighbor_feat_idx=array([0, 1], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=0, neighbor_feat_idx=array([1, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=1, neighbor_feat_idx=array([0, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=2, neighbor_feat_idx=array([0, 1], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=0, neighbor_feat_idx=array([1, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=1, neighbor_feat_idx=array([0, 2], dtype=int64), estimator=BayesianRidge()), _ImputerTriplet(feat_idx=2, neighbor_feat_idx=array([0, 1], dtype=int64), estimator=BayesianRidge())]
```

But what is the expected result when `keep_empty_features=True` ?

According to your output, it is replacing the nan values as:
```
# transformed X
[[3.  0.  1. ]
 [2.  2.5 3. ]
 [4.  5.  2. ]]
 
# imputation_sequence_
[]
```

Labels: Bug