Atmega328 vs Atmega328p....what are the differences?

That's because the Arduino bootloader doesn't use the hardware signature in its sketch-loading
protocol, it uses the signature bytes compiled into the bootloader binary when it was compiled.

If you use ICSP to burn a bootloader you have to match the hardware signature...

Yes, exactly what I discovered via T&E.