What causes these geometry differences between original PostGIS data and Geoserver WFS?
The output would seem consistent with a decimal truncation, which is performed by GeoServer WFS 1.0 as configured in the global panel. Normally the value would be 8 decimals, but your precision issues seem to suggest a setting like 5 decimals instead (making the rough assumption of 100km per decimal degree, in practice that changes a lot depending on the latitude, see https://en.wikipedia.org/wiki/Latitude#Length_of_a_degree_of_latitude )
It's defintely related to the resolution somehow. I wouldn't know if the lower resolution is enforced by GeoServer or QGIS as I don't know these tools.
Take a look at the image below where I have added a sort of grid line layer on top of the map. Can you see how the distance between the black lines is similar horisontal and vertical?
I have only added lines where there seemed to be a node in the red line layer so in some areas the distance is doubled between the grids lines.
So the question is now where can you specify a lower resolution (precision truncation) or simplification of your data that would return a result like this?