You are getting exactly what you asked for. The top three entries are, indeed, <18,18,17> based on your example.
Your problem is, I think, that you are asking the wrong question.
If you want to see the top three kick numbers independent of kickers, you need to do something a bit more elaborate...
Make a query that does a group-by on goals in your stats table (and nothing else is in the query!) That becomes query #1.
Now make query #2 that takes the top 3 entries from query #1. Since there was nothing else in query #1 there will be nothing else in query #2, either. This query should return 18, 17, 16 as you said you wanted. At least I think it will.
Now, if you want to know EVERYONE who has kicked one of these top three numbers (in other words, allow duplicates at this stage), make query #3 that joins to your raw table where the goals field in both the table and query are equal and you keep all records from query #2.
HINT: In the query design grid, table-select section, you can define a relationship that isn't really defined in the master database relationship diagram. Just add your raw table and query #2 as the two contributors to this query. Then do a drag-and-drop of the goals from your query #2 to the goals field in the table. Make it so that you have all records from query #2 and all matching records from the table. This should do the trick.
I think your original problem is that in English your question isn't about the top three scorers, it is about the top three distinct score numbers. But when you add a person to the record and do the top three, even asking Access to make them unique.... they ARE! Because the combo of player and goals is unique no matter what.
My suggestion isolates the goal counts first, then goes back to pick up the matching players later. Given what you said you wanted to see, I think my solution will come close.