Das ist ein Grund weshalb man Arrays eher so übergeben sollte:
uint8_t Adafruit_Fingerprint::getReply(uint8_t* packet, uint16_t timeout)
Dann ist klar dass hier ein Zeiger übergeben wird
[] geht natürlich auch. Das Array zerfällt in einen Zeiger. Also call by reference.
Merke: Array-Variablen sind in C/C++ nicht viel mehr als Zeiger auf das erste Element