Arima and Sarima in python
It seems you are passing the same parameters to both Python classes: ARIMAX and SARIMAX... and this should produce the same answer, I agree.

The implementations are however separate, it seems - ARIMA inherits from ARMA models and SARIMAX inherits from MLEModel. Have a look at the source code for ARIMA (search fro "class ARIMA") and SARIMAX (search for "class SARIMAX").

There are probably some different ordering of the operations, or different limits on the tolerances for MLE.