スプライトの定義番号は、定義した時点の定義座標X,定義座標Y,幅,高さ,原点X,原点Y,アトリビュートの、7つの情報を持っています。なのでSPCHRで定義番号を変更すると、この7つの情報が変更されます。SPHOME(原点X,原点Y)の値を変えたくない場合は、他の方もおっしゃっているように、SPCHRで定義座標X,定義座標Y,幅,高さのみを変更するか、変更前後の定義番号で原点X,原点Yが常に同じであれば、SPDEFの時点で原点X,原点Yを同じに定義しておくと良いでしょう。
定義番号でスプライトの絵を切り換えたいんだけど、途中でSPHOMEの値を変更することもある場合は、原点X,原点Yを変数に覚えておくか、SPHOME OUTでその都度取得するなりして、SPCHRで定義番号を変更するとともにSPHOMEで原点X,原点Yを設定し直せば良いでしょう。