I found a mention that "The SRF08 behaves in the same way than series 24XX eeprom's, except that the adressing in I2C is handled differently." This could explain some of the oddness in the interface.
Here's the technical specification: http://www.robot-electronics.co.uk/htm/srf08tech.shtml
The first three write locations are:
0: Command Register for setting modes 80=inches, 81=cm, 82=microseconds
1: Max Gain Register 0-31 (gains of 94 to 1025)
2: Max Range Register 0-255 (range of 43mm * (register+1))
The library seems to want to set all three whenever it sends a command.
The important read locations are:
0: Software Revision
1: Light sensor reading
2,3: 16-bit result
To set the I2C address you send commands 0xA0, 0xAA, 0xA5, NewAddress
I think the New_Address += 4; is in setup() because some idiot initialized New_Address to 248 (0xF8) and the actual address of their unit is 252 (0xFC). Of course the default address is 0xE0 you you probably ought to use that. It seems very odd that the library sets a new I2C address by sending the commands to address 0, regardless of the current address.