I don't know if this is obvious to everyone or not, but I didn't see it specifically posted as a hint, and I just discovered it myself (after many years) so I thought it might be worth posting.
If you print from TextEdit, the margins used in the printout are based on how you've scaled your document window. So, if you've made your document very wide, for instance, TextEdit will attempt to use the wide document's borders as the print margins, resulting in scaled text and a lower-than-expected page count. Conversely, if you make your document very narrow, TextEdit will try to use the narrower margins and print many pages at a larger font size. (You can see this behavior by simply creating a TextEdit document with some text, scaling the document window to something very wide, printing and then previewing the print rather than actually printing it. Then repeat this with the same document scaled to something extremely narrow. See the difference?)
This has driven me crazy for some time, as I use TextEdit for a lot of my writing needs these days. (I dunno, I just like it.)
The solution can be found under the "Format" menu. Before you print, select "Wrap to Page" from the menu (or press command-shift-w). TextEdit will present your document to you with normalized margins, and will then print your document using those margins. It will even show page breaks. Very handy! Of course, to switch back to the default TextEdit view, just select "Wrap to Window" from the Format menu (or press command-shift-w again).
Mac OS X Hints
http://hints.macworld.com/article.php?story=2007010912364034