Please note that this issue does not exist in OpenGL, due to its usage of polygons instead of the fake 3D rendering that software mode uses. Switching to something similar to QZDoom's Software Renderer might be a solution to this issue, but can't really be expected. Though, I'm pretty sure I have heard about some source ports that have fixed this issue by itself, so...

If I recall correctly, this is due to inherent inaccuracies in the rendering code because Doom approximates things, rounding for speed reasons instead of doing the math exactly. This creates quirks when the rounding changes each time the function is called, creating an answer that's slightly off in a different way each time. You can mitigate this in areas where it's exceptionally problematic by adding redundant vertices to the map, but it won't go away entirely, especially at higher resolutions.