Since #22094, this fails:
est = <AnySklearnEstimator>
dict_before = est.__dict__.keys()
loaded = pickle.loads(pickle.dumps(est))
dict_after = loaded.__dict__.keys()
assert dict_before == dict_after
We're in effect changing the state of the estimator through pickling, and I don't think that's a good idea.
If we think we need to know the version where a model was constructed, then BaseEstimator.__init__ should do that, not __getstate__/__setstate__.
I suggest renaming the attribute to __sklearn_version__ and having it set in BaseEstimator.__init__.
cc @BenjaminBossan @glemaitre @thomasjpfan @ogrisel