Hola,
sizeof(frase) te da la longitud total de la variable (no de la frase), que en tu caso contiene la frase mas un '\0' carácter nulo final. Pero podría ser una variable de longitud 100 que tiene una frase de 8 caracteres.
Para obtener la longitud de la frase tienes que usar strlen(frase). Y para recorrer la frase la condición es "i < strlen(frase)"
void hacerFrase(char frase[])
{
Serial.println(strlen(frase));
for(int i = 0; i < strlen(frase); i++)
{
Serial.print(frase[i]);
delay(500);
}
}