To generate the position pass in Cycles, it’s really easy. On a render layer, override the material with a geometry input and plug the Position output in the surface by a emission shader.
With Blender Internal it’s a bit more complicated. You can use exactly the same input from the geometry node in the shader (which is called Global instead of Position) but the problem is that Blender clamps the values lower than 0. We need negatives values to have a correct position pass. So the workaround to get the good values is very simple : add a very big value on each channel in the shader.
And then, directly before saving the pass, subtract the same value on each channel in the compositor.
I recommand you to not use a position pass from Cycles with Blender Internal passes or the opposite because the filtering is not the same and the result will not be good.
Thanks for your comment, I could add a bouton in the addon to set the pass automatically.