Ai fini della codifica sicura, devi sempre chiudere esplicitamente le connessioni del database per assicurarti che il codice sia in grado di chiudersi con grazia e impedire a qualsiasi altro oggetto di riutilizzare la stessa connessione dopo averlo fatto.
L'uso di unset equivale a lasciare aperta la connessione al database, poiché si sta facendo affidamento sul garbage collector per ripulire la variabile, anziché chiedere alla connessione di chiudere con garbo la connessione dopo aver finito. Anche se come accennato da CodeCaster di seguito, farlo è accettabile dal momento che il garbage collector si assicura che le connessioni siano chiuse.
Un esempio utile, diciamo che stai pranzando in una caffetteria da qualche parte. Dopo aver mangiato, hai due possibilità, gettare gli avanzi nella spazzatura e poi riportare il piatto / vassoio al suo posto giusto (che è la pulizia dopo te stesso). E l'altro è lasciare il tuo casino sul tavolo e aspettare che qualcun altro (il garbage collector) lo pulisca per te.
Se lo pulisci da solo, sei sicuro che il tuo casino è stato ripulito. Ma se ti affidi al garbage collector, proprio prima che il garbage collector ripulisca il tuo casino, e se qualche strano stalker decidesse di usare i tuoi utensili usati per aiutarli nelle loro fantasie notturne su di te, poi riportali alla caffetteria appena in tempo per il garbage collector per ripulire il tuo casino. Cose del genere possono succedere.
EDIT: corretto il mio errore sui garbage collector.