After further reading - I just want to clarify the following interpretation.

It is impossible to multiple a normal by the ModelView matrix, because the ModelView matrix may include Non-Uniform scalings within it. (If a non-uniform scaling is applied to an object, the inverse of the scaling must be applied to the normal.) Due to interesting matrix multiplcation properties, it works out that using the inverse transpose of the ModelView will indeed apply the proper transformations and uniform scalings as well as the inverse of non-uniform scalings as required.

One last question - It appears that although light positions are specified in worldspace, the modelview matrix seems to be automatically applied. Thus, lightpositions, when accessed in a vertex program, already have the modelview matrix applied. Is this correct?