I don't know whether this is the best technique but it is what I personally do in all processor projects.
Once out of reset I configure all unused (unconnected) GPIOs to outputs driving '0'.
The thinking behind it is to avoid inputs floating and driving '0' ensures a 'clean' logic level (less EMC potential than driving '1').
During development there is often the need to do some debugging of interrupt behaviour etc, and then the unused GPIO can temporarily be used to signal when interrupts occur or for timing then (set '1' on entry and '0' on exit, etc.). Such code is removed once such investigations are complete. Therefore not connecting the unused pins to GND allows them to be made use of when required.