Instead of using the comment of code, lets use the in built functionality of the framework.

Array.Sort(teams, DirectCast(teams(0), IComparer(Of Team)))

Spoiler

This uses IComparer(Of Team) Interfaace

Public Function CompareTo(ByVal other As Team) As Integer Implements System.IComparable(Of Team).CompareTo
If Me.Wins < other.Wins Then
' Swap Places
Return 1
ElseIf Me.Wins = other.Wins Then
If Me.Draws < other.Draws Then
Return 1
ElseIf Me.Draws = other.Draws Then
If Me.Loses > other.Loses Then
Return 1
ElseIf Me.Loses = other.Loses Then
' Goal Diffference
If Me.GD < other.GD Then
Return 1
ElseIf Me.GD = other.GD Then
If Me._GF < other._GF Then
Return 1
Else
Return 0
End If
End If
End If
End If
End If
Return -1
End Function
Public Function Compare(ByVal x As Team, ByVal y As Team) As Integer Implements System.Collections.Generic.IComparer(Of Team).Compare
Return x.CompareTo(y)
End Function

Note: How it looks similar to the commented out sort code.

Console.WriteLine()
Console.WriteLine("After Sorting")
For Each Team In teams
Console.WriteLine(Team.ToString())
Next
End Sub
End Module

Conclusions
The Parallel Array based method of doing the task is large and complex. Even I made error whilst writing the code.
The Array with Objects based method of doing the task, it separated the code in discreet encapsulations.
One part stores the data for each team, another does the comparison between two teams.
Overall the code is easier to understand and maintain.