Pointer Size using eeprom.h with ATmega328p in AVR-GCC
In AVR, Pointers to regular memory (SRAM) are 16-bit. But EEPROM is not regular memory. The eeprom.h in AVR Libc takes pointers to different data types, depending on what you actually write to EEPROM: when you read/write a byte, it takes a byte pointer, when you read/write a word it takes a word pointer, etc.  Hence the difference in the different functions you quote.  And you are right: the pointers themselves are the same size, just the size of what they "point to" is different.  You can verify this for yourself by checking what sizeof(foo) returns when foo is uint8_t* versus uint32_t*. 

But, in fact, the arguments you pass to AVR Libc eeprom functions are not really pointers in the regular sense of the word: you cannot access the data they "point to" except via the EEPROM functions. It might have been clearer if the AVR Libc EEPROM functions took a uint16_t type called eeprom_index instead of a pointer type, IMHO.