Ciao, secondo me ci deve essere qualche problema in altre parti del codice (es: come è implementata la funzione di swap?), perché così ad occhio non mi sembra di notare niente di errato.
L'unica cosa che potresti migliorare, secondo me, è che potresti implementare tutta la logica del confronto all'interno del metodo "isGreater".
In altre parole, visto che l'ordinamento dipende in primo luogo dai punti e in secondo luogo dalla differenza reti, allora potresti fare così:
public boolean isGreater(Squadra other) {
if (this.punti > other)
return true;
if (this.punti < other)
return false;
return this.dif > other.dif;
}