I had thought that different AVRs used the same address for the same register. For example SREG always seems to be at 0x3f. I find it convenient since I can build a binary for one part that will work on another part without rebuilding.
In testing picoboot, after testing a build on an ATtiny84, I decided to test it on an ATtiny88. I was able to flash it to the chip without problems but didn't run. I checked my connections, and everything was OK. So I did a fresh build for the ATtiny88, flashed it, and it worked. So something is different.
Looking at the datasheets, for ATtinyx5, x4, & x313, PORTB = 0x18. On the ATinyx8, it's at 0x05.
After a little more digging through datasheets, I noticed that's the PORTB address for most of the ATmega parts, such as the 88, 168, and 328. So the ATtiny88 seems more like a stripped-down ATmega88 than an original ATtiny part.