The sstate machinery has some special handling to make the do_fetch state not depends on the package arch. But since the recipe QA was added in commit e0c71367ab59 ("insane.bbclass: add do_recipe_qa task") the do_fetch task depend on the do_recipe_qa task which is arch specific. This then indirectly make the task hash of do_fetch be arch specific and lead to some needless sstate mismatch. The do_recipe_qa task is also set to run before do_package_qa and do_build so it would just run a bit later without this dependency.
The reason it was injected before fetch was so that it runs early in the build and quickly shows the user recipe QA issues. I'm not a huge fan of that position but there are definite pros and cons to it. I recently did some work to improve the ERROR_QA dependency and I'm hoping that improved that task. Whether it is still arch specific, I'm not sure but it should at least be better with master.
Causing a "hash problem" isn't strictly true since do_fetch isn't an sstate task. I agree they are too arch specific at the moment though. I merged some fixes: https://git.yoctoproject.org/poky/commit/?id=6cc2a3649a03da8b2ebc4fff4b7bd9ba4eb76497 when then allows: https://git.yoctoproject.org/poky/commit/?id=27eeb5e70bcc872b9d06caf27977a82732f64c77