The software renderer usually ends up being more accurate than hardware if:
1. Nobody's willing to do the work to make the hardware renderer accurate (since that can be hard, especially if it's a weird architecture!)
or
2. It's /such/ a weird graphics architecture that fully accurate rendering isn't even close to feasible in hardware, for whatever reason.
So it can depend a lot on which emulator it is, and what it's trying to emulate. Dolphin is also a case where the software renderer tends to be lower priority, since it's unusably slow -- some fixes actually reach the hardware renderer well before someone fixes it in software. This is pretty much just an artifact of developer priorities and preferences, so it can totally differ in a different project.
1. Nobody's willing to do the work to make the hardware renderer accurate (since that can be hard, especially if it's a weird architecture!)
or
2. It's /such/ a weird graphics architecture that fully accurate rendering isn't even close to feasible in hardware, for whatever reason.
So it can depend a lot on which emulator it is, and what it's trying to emulate. Dolphin is also a case where the software renderer tends to be lower priority, since it's unusably slow -- some fixes actually reach the hardware renderer well before someone fixes it in software. This is pretty much just an artifact of developer priorities and preferences, so it can totally differ in a different project.