I always schedule documentation for when the code becomes stable. It is a very rare occasion that management lets us spend even a single sprint on it. There is almost always another fire to put out.
Aside from the reasons mentioned, I hate writing documentation because there are no standard rules. The rules are mostly vague, like, "Write only the documentation you need and no more." Really? How much is that? How do I know what someone else needs since that's who's likely to need it? The one that is mentioned is the deadlines. How do you find the time since it's not likely to be part of the project's scheduled time or it's minimal?
I think the documentation should be merged with the program code. The compiler should throw an exception if there is no proper minimum documentation.
I can remember a number of instances of having to dive into design docs to ascertain how a few systems interacted with each other.
I bet a lot of the time it might be good enough to just have a "here's the set of options we went with" version of a design proposal/doc as documentation