Because of how they are constructed internally, the PublishingWebs returned by indexing into or enumerating over this collection will not properly Dispose of their SPWeb references when Close() is called. Instead, the caller should omit Close() and call Web.Dispose() instead. This does not apply to objects created by Add(), as in the example.
http://solutionizing.net/2009/01/08/the-semi-disposable-publishingweb/