To add what little I can to this, the reason that drives me to go to these lengths is the craft. Design, like code, is a craft. A good craftsman just does not leave mistakes in their work purposely. Whenever I do this it slowly drives me crazy until I either go back and fix it, or drop the project entirely (if there are a lot of mistakes and/or things I don't really like), usually citing some reason like 'it's too messy' or 'i lost interest'.
For me, design and programming are not all about a/b testing, 100% time efficiency, etc. A lot of it is about art -- making something you know is great and shipping it. When you know something is wrong with your work as an artist, it will bother you until it's fixed.