Buffer exceeding ramsize do not produce error in avr-gcc
It is not the header, but the linker script that specifies the sizes of various memories. In the gcc world it usually ends with .ld. Example from the Cortex-M world (AVR should be similar):

MEMORY
{
  FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 65536
  RAM (rwx)  : ORIGIN = 0x20000000, LENGTH = 8192
}


If the data+bss size is bigger than the RAM section you would get a linker error (assuming that the big array is not optimized out).