I think the zeroing of the APU is because it's part of the
power on state, and as a result when trying to rip NSFs some games actually rely on this, and thus there's no code in the game that initializes it (e.g. the Mega Man vs Game Genie sweep problem). I'm not sure why the spec recommends $0F to $4015, but there are a bunch of old NSF rips which rely on it.
This is not true of any of the expansion chips, if I recall correctly, so I'm not sure there's a similar need to apply this idea to expansions as well. It might be reasonable to expect the NSF to handle any needed initialization in INIT.
If you're writing an emulating player, you might want to create a consistent pre-INIT state anyway, for determinism's sake. If you're writing a hardware player, I dunno what to recommend. If you're making an NSF rip with expansion sound, definitely do the initialization yourself in INIT (existing players are inconsistent about pre-INIT expansion state).
There's a few enable registers that are often not emulated but really important to initialize when testing on hardware:
VRC6 $9003 should be $00 (halt / frequency multipler control).
FDS $4023 should be written with bit 1 set (sound enable).
N163 $E000 bit 6 disables sound if set.