At work, I've seen a variety of solutions, depending on the teams I work with:
* MS doc(x) on a network folder with an excel spreadsheet to keep track of docs (and a lot of ugly macros).
* MS doc(x) in a badly organized subversion repository
(side note here, docs comments and revision mode are heavily used in those contexts, which is really annoying)
* rst + sphinx documentation in a repository to generate various outputs (html, odt, pdf...) depending on the client.
In some cases we also use Mako (a python template engin) before sphinx to instantiate the documentation for a specific platform (ex: Windows, RedHat, Debian...), with just a few "if" conditions (sphinx could do it in theory, but it's quite buggy and limited).
I've also put in place a continuous build system (just an ugly shell script) rebuilding the sphinx html version every commit (it's our "badly implemented readthedocs.org", but it's good enough for our needs).
In other cases we use specification tools like PowerAMC or Eclipse/EMF/CDO based solutions, the specification tool in that case works on a model, and can generate various outputs (docx, pdf, rtf, html...).
At home, for my personal projects, I use rst + sphinx + readthedocs, or if the documentation is simple, just a simple README.md at the root of my repository.
As a personal opinion, I like to keep the documentation close to the code, but not too close.
For example, I find it really annoying when the sole documentation is doxygene (or equivalent), it's necessary to document each public methods/attributes individually, but it's not sufficient, you need to have a "bigger picture documentation" on how stuff works together (software and system architecture) in most cases.
On the other side, keeping the documentation away from the code (in a wiki or worst) doesn't work that well either, it's nearly a guaranty that documentation will be out of date soon, if it's not already the case.
I found having a doc directory in the source code repository a nice middle ground.
I found wikis annoying in most cases, rarely up to date, badly organized and difficult to version coherently and properly (ex: having version of the doc matching the software version).