Non esiste una sola query che ti butti fuori i risultati come vuoi tu, devi farne 2

Nella prima fai un SELECT DISTINCT dei gol e li metti in un array

Poi ciclando l'array esegui una query che ti tiri fuori marcatore e squadra

Io la farei così
Codice PHP:
 <?php

mysql_connect
("localhost""root""")
        or die(
"Connessione non riuscita: " mysql_error());


mysql_select_db("test");

$risultato mysql_query("SELECT DISTINCT goal FROM marcatori ORDER BY goal DESC")
or die(
"query non riuscita: " mysql_error());

while(
$riga mysql_fetch_assoc($risultato)) {


$gol[]=$riga['goal'];


}


$tot_gol count($gol);

for (
$i=0$i<$tot_gol ;$i++) {

$risultato2 mysql_query("SELECT marcatore,squadra FROM marcatori WHERE goal=$gol[$i] ORDER BY marcatore 

ASC"
);

echo 
'Goal '.$gol[$i].'
'
;

while(
$riga2 mysql_fetch_assoc($risultato2)) {
echo 
"$riga2[marcatore] $riga2[squadra]
"
;
}
echo 
'
'
;

}