Have you tried attaching to the w3wp app pool in the debugger and tried using !dumpheap -stat and !gcroot with -min/-max /-type options to narrow down what kinds of objects are being left around?
Since you can repro some of this locally, maybe try your simple app that creates the document, then set the pdfdocument (or other root object) variable to null, force GC, then look at what's left in the heap using the above?
Also, RedGate has a pretty decent mem profiler you can try out for free that might shed some light also.
Just trying to help.. Very interested in your results btw...
-Jeff