There is another (what was to me the most obvious) method of stego'ing text in text: typoes.

It's more dense than whitespace: typos may have a value (what character they are) as well as an existence. You could encode using either method:

Existence: every, say, fifth word may or may not contain typos. Pros: easy to encode/decode reliably (you only have to check every fifth word), allows for more natural-looking typoes (you don't need people to believe that the extra 'z' in "pozll" somehow happened naturally) and typos of omission. Cons: hard to decode automatically, as spell-checkers are only so good at spotting typoes (but easier than the value-based method below), not very dense (though using a smaller character set than ASCII, say Baudot, or ISO 6-bit if you need digits too, can mitigate this).

Value: typos may occur anywhere but each is significant, as the character itself carries data. Two typoes could encode a byte, with the least-significant four bits of each being the value sought. Thus, you'd encode 10110111 as a sequencence of two typos: one character whose ASCII value mod 16 is 11, followed later by one for which ASCII mod 16 = 7. Pros: denser encoding. Cons: may force more unnatural-looking typos like "pozll", harder to encode/decode reliably, much harder to decode automatically. Also becomes obvious if you're a noder, like myself, who almost never typoes.

You could of course combine the two methods, or alternate them, or use an entirely different method based on typos, or whatever. The gist of the idea, as with all steganography, is unobtrusively inserting planned "noise" into a large chunk of data.

Some cryptology guy claims that certain eBay auction items' images change fractionally at intervals. To him this suggests steganograhy in eBay, a reasonable-looking reading of the cards to me. So the idea of stego in a large body of distributed work is nothing all that unusual: it may, in fact, already be commonplace.