Quindi viene eseguita alla fine
Non necessariamente. Dipende dal codice, nel manuale vengono chiaramente descritti altri due casi in cui il metodo __destruct() viene richiamato.

In certe situazioni, poter chiudere la connessione al database prima possibile (es. non appena non ce ne è più bisogno) è vantaggioso (es. nei casi in cui il numero di connessioni al database è limitato).