We have no idea how this functions works. May be some delay needed to perform correct writing. For such cases I prefer to write my own functions according manual.
According to a comment in eeprom_routines.h, the library version does wait for write completion. But I would inspect the generated code to be sure.
The macro EEPROM_READ() is NOT safe to use immediately after any write to EEPROM, as it does NOT wait for WR to clear. This is by design, to allow minimal code size if a sequence of reads is desired. To guarantee uncorrupted writes, use the function eeprom_read() or insert while(WR)continue; before calling EEPROM_READ().
I'm not sure that's true, the question referred to 10-bit ADDRESSING not 10 bits of data. However, the 18F4620 does have two 8-bit address registers for EEPROM access, EEADR and EEADRH with the two MSB of the address going to EEADRH. I'm not sure if XC8 takes that into account although I would be suprised if it didn't. I do not have a copy at hand to look at the code it produces at the moment.