Es gibt eigentlich keine aktzeptable Anzahl von Speicherlecks (schon garnicht Speicherlecks/Zeilenanzahl).
Speicherlecks deren Ursache in fremden Komponenten liegt (oder Delphi-intern), lassen sich manchmal nicht verhindern.
Solange die Größe der Lecks wärend der Programmausführung nicht ständig wächst, kann man damit leben.
In deinem Fall dürfte die Ursache aber nicht die Funktion GetLogicalDrives sein.
Vermutlich gibst du einfach die Variable LaufwerkList irgendwo nicht frei.
Für jeden Laufwerksbuchstaben wird ein eigener String mit eigenem Speicher erzeugt.
Deine While-Schleife bricht wahrscheinlich bereits bei "B:\" ab.
Die For-Schleife prüft alle Buchstaben, entsprechend mehr Einträge hat die Liste.
Mist zu langsam