Nicht verwendete I/O-Ports stellt man auf IN und aktiviert den zugehörigen PullUp. Strom fliesst dann keiner (bis auf den Leckstrom der Ports, irgendwo im Bereich von pA). Ansonsten werden diese Pins nicht verdrahtet, also auch nicht nach GND was wie gesagt viel Strom ziehen würde.
Die Pins komplett offen zu lassen (high-Z, also IN ohne PullPu) ist nicht ratsam, weil die Eingangstreiber dann merklich Strom ziehen wenn das Signal floatet (Treiber ist dauernd am schalten). Das ist sehr ungünstig, wenn der µC schläft oder Idle ist etc. und sabotiert u.U. auch den ADC-noise-cancel.
Weitere Möglichkeit ist, die Ports auf OUT zu stellen und nicht zu verdrahten. Zieht auch kein Strom weil keine Last da ist.
Offen lassen (high-Z) und nach GND oder VCC verdrahten würde ich abraten. Bei Fehlfunktion ist das übel, also zB Softwarefehler oder unkontrolliertes Verhalten des µC wenn zum Beispiel keine BrownOut-Detection aktiviert ist. In den Sleep-Modes ist es nicht immer günstig/nötig den BOD zu aktivieren (zieht merklich Strom). Das Programm kann also wild umherhopsen und irgendwelche Instruktionen ausführen, zB auch Daten als Befehle interpretieren. Zudem gäbe das Anschliessen ungenutzter Ports an GND oder VCC mehr Leitungen und ein etwas komlpexeres Layout, was nicht nötig ist. Zudem kann man die Schaltung später besser patchen (Draht ziehen) wenn man den Port doch noch nutzbar machen will für etwas, das man erst nicht eingeplant hatte, und muss dazu nicht die GND/Vcc Verbingung aufrippen, was zudem nicht immer geht.
Lesezeichen