Valores primitivos são do tipo string, number e boolean. Agora os array, object e function não são primitivos, portanto, se você compara-los, irá receber false:
Então se você passar uma função via props, o React irá atualiza-lo mesmo que as props não tenham mudado, simplesmente porque uma função é diferente de uma função, mesmo que seja ela mesma. complexo?
Então usamos o useCallback pra criar uma referência única pra uma função e o React saber que é ela mesma e evitar atualizações desnecessárias.