I think the common issue is that people document things that don't need to be documented until they burn out on doing useless work, and finally get to something that needs to be documented and don't document it.
The reality is that almost all code, most functions, and some variables don't need to be documented. Many cases of needing documentation are actually maintainability flaws (i.e., people who don't read the documentation, which is most people most of the time, will write code with bugs). And it's important to avoid providing obvious documentation, because it makes it harder to realize that something is actually tricky. But there's a tendency to strive for completeness and then fail in arbitrary ways.
Of course, the best documentation is generally not written by the author of the code, but by the first person to have problems understanding it and then figure it out.