Personally, I think the biggest challenge with documentation is keeping it up to date.
The only way I've found to be actually up-to-date on docs is to do GitOps and have self-documenting code. That way every change being made is automatically documented with a commit message.
If you can't do that because your tools aren't GitOps compatible, you need management to enforce some kind of documentation rule. Like every time a system gets touched, documentation needs to be updated. A project isn't complete until docs are done/updated.
This is easily said, but in practice it's just not going to happen. You need a team that both actually wants to this, and has the time to do it.