In attesa che qualcuno mi spieghi perché non funziona usare il punto "p" come reference posto una soluzione tampone..

codice:
Public Module MyExtention
    <Extension>
    Function ForEach(pArray As Point(), p As Point) As Point()
        For i As Integer = 0 To pArray.GetUpperBound(0)
            pArray(i).Offset(p.X, p.Y)
        Next
        Return pArray
    End Function
    <Extension>
    Function ForEach(pArray As Point(), X As Integer, Y As Integer) As Point()
        For i As Integer = 0 To pArray.GetUpperBound(0)
            pArray(i).Offset(X, Y)
        Next
        Return pArray
    End Function
End Module