The target hook prefersVectorizedAddressing() already exists to check with target if address computations should be vectorized, so it seems like this could be used in SLPVectorizer as well.
This gives some changes on SystemZ, but it doesn't seem to matter much (on SPEC). Some ~100 less (expensive) extractions into address registers.
Some test changes on AArch64 and X86, have not looked into them, but it seems these subtargets now change when "gather" is unsupported, which makes sense, I think.
Could you try to remove this change and keep just the change in NotProfitableForVectorization?