I rewrote the EEPROM classes as a single 24LC01 class that uses an extra variable in the constructor methods to specify the IC type (16B vs 256 vs 512, etc), which in turn sets the max address. All write and read methods now use a 2-byte integer address variable, as you suggested.
It bugs me too. I'll see if I can do something about that - I was just trying to get something functional, but it certainly could use some dressing up.
Somewhere over the past few weeks I had also integrated the FusionWare.SPOT.Hardware
I2CBus class... so that is a change from the code in the original post.
I'll need to do some testing to make sure the rewrites didn't break anything in the process - hopefully I'll get to that tonight or tomorrow. If you want the untested code, let me know.