Taking as given: software rendering uses the general-purpose CPU to paint pixels rather than a dedicated GPU; the general-purpose device has less ability because it's not optimised for the job; writing two sets of code rather than one is more work and GPUs became commonplace so the worse option died out.
Then the specific flaws you're seeing in that image — to answer "why they produce lower quality" — are lack of texture filtering and very harsh geometry edges.
When deciding which colour to make a screen pixel, both the CPU and the GPU know which point on the original textured surface is visible there. That's where processing diverges. It is very unlikely that the point on the original surface falls exactly on the centre of a pixel in the texture.
A 3d accelerator of the period is likely to have time to perform bilinear or trilinear filtering. Bilinear filtering samples all four texture pixels that surround the point being output, then calculates a weighted sum. So that's four texture lookups, six multiplies and a summation. Trilinear filtering does that twice with two different resolutions of texture and calculates the weighted sum of the results, for eight texture lookups and thirteen multiples.
That's far too much work for a CPU. So it just figures out which source pixel is closest to the point and outputs that.
The difference is between textures that when stretched too large obviously show their individual pixels as boxes, and surfaces that just look very blurry.
In that era, harsher geometry edges result from the CPU just not being fast enough to draw the same number of pixels as a 3d accelerator. So a lower screen resolution is used. They also tend to run at a slower frame rate, which makes the effect more apparent. Several 3d accelerators of the period support edge blending as a way to eliminate rough edges, which uses per-pixel weighted transparency on each edge pixel, but that's not as useful as it sounds because it presupposes you're drawing all geometry from back to front and therefore doesn't interact very well with engines built around z-buffering.
The posted screenshot doesn't show these problems, but other divergences you might see in contemporaneous titles:
- the software renderer may use a lower colour depth. That's to reduce the amount of data that needs to be worked on and moved around. But it tends to severely deteriorate lighting;
- the software renderer may decide not to perform perspective calculations within polygon faces at every pixel, either not doing it at all (for the PS1 look) or just doing it less frequently (as per Descent and Quake; it tends to look a bit like walls are fabric strung on box frames that move with the player);
- the software renderer may use lower-resolution textures. That's just a simple effect of the difference between being a game that has to fit in 16mb of RAM and being a game that can stretch out to 16mb RAM plus an extra 4mb on the GPU.