The other difference comes because by default PyMC gives you the unconditional posterior trajectory (that is, sequences of length T starting from t=0 simulated by model dynamics), while the numpyro example is showing the conditional posterior trajectory (that is, a sequences of one-step-ahead predictions, each one starting from datapoint t-1 and generating t from the AR process).
The SARIMAX notebook I linked goes into the difference (and illustrates it) more.