here is a project that will reproduct the error. The interesting thing is if the word doc is saved to disk and read back in the TOC is created correctly. It is only when running through the building of the word doc in memory does the error show up.
The project first builds the word doc bascially the way the production app does except reads the data from a stored xml dataset. It then saves the document to disk (which is normally not done) and creates the BuildAlert.pdf. It then reads the word doc from disk and creates the BuildAlert.pdf. If the project works for you as it does here, the ReadAlert.pdf should have the spacing problem and the ReadAlert.pdf should be ok.