Why would you drain an autorelease pool instead of releasing it?
One reason is for garbage collection (not available on iPhone)
release is a no-op with GC enabled, but drain provides a hint to the garbage collector
From the docs:
Garbage Collection
In a garbage-collected environment, there is no need for autorelease pools. You may, however, write a framework that is designed to work in both a garbage-collected and reference-counted environment. In this case, you can use autorelease pools to hint to the collector that collection may be appropriate. In a garbage-collected environment, sending a drain message to a pool triggers garbage collection if necessary; release, however, is a no-op. In a reference-counted environment, drain has the same effect as release. Typically, therefore, you should use drain instead of release.
The best answer here is "because Apple tell you to".
Following Apple's "best practices" is the best way to improve your chances of being forward compatible.