Max length of char arrays?
The main issue with your code is:

sizeof(s)


That doesn't return the string length - it returns the size of the char pointer - which is two bytes (on an 8-bit system, 4 on a 32-bit system).

Instead you need to use strlen(s) and add one to it for the NULL character at the end.

if(verbose){
  char buf[8 + strlen(s) + 1] = "[DEBUG] ";
  strcat(buf, s);
  Serial.println(buf);
}


However, what you are doing is pointless. Just print twice:

if(verbose){
  Serial.print(F("[DEBUG] "));
  Serial.println(s);
}


Note the use of the F() macro to ensure that [DEBUG] doesn't waste RAM.