While trying to do some benchmarking I noticed that somehow the input datetime string was being modified in place when validating the model. Which was extremely confusing to me. I did some more testing and found this: https://github.com/stac-utils/stac-pydantic/blob/main/stac_pydantic/item.py#L38
It is modifying the input data before it gets to the pydantic validators, and doing extra validation within python when pydantic can handle it better / faster.
I will submit a related PR shortly.