If you use EEPROMs larger than 255 bytes, the Variant 3: can't be used if it's addressing above 256, as the address will be more than one byte, but if it's addressing below, I don't see why it doesn't work.
Variant 3 : I know it works, don’t reply on this one.
Variant 1 : I’ m storing a known and predefined value to make sure the EEPROM contains the data. When the value at address 0 doesn’t contain the expected value (here = 12), it means the EEPROM has to be loaded with the default data.