Need help loading sketch on atmega48 using Arduino Uno as ISP.

You're not using avrdude by itself, even though you're skipping the bootloader? Hmm. It might work if you change your boards.txt from:

atmega48.name=Arduino Atmega48

atmega.upload.protocol=stk500
atmega48.upload.maximum_size=4096
atmega48.upload.speed=19200

atmega48.bootloader.low_fuses=0xff
atmega48.bootloader.high_fuses=0xdd
atmega48.bootloader.extended_fuses=0x00
atmega48.bootloader.path=atmega
atmega48.bootloader.file=ATmegaBOOT_168_diecimila.hex
atmega48.bootloader.unlock_bits=0x3F
atmega48.bootloader.lock_bits=0x0F

atmega48.build.mcu=atmega48
atmega48.build.f_cpu=16000000L
atmega48.build.core=arduino

to

atmega48.name=Arduino Atmega48a

atmega.upload.protocol=stk500
atmega48.upload.maximum_size=4096
atmega48.upload.speed=19200

atmega48.bootloader.low_fuses=0xff
atmega48.bootloader.high_fuses=0xdd
atmega48.bootloader.extended_fuses=0x00
atmega48.bootloader.path=atmega
atmega48.bootloader.file=ATmegaBOOT_168_diecimila.hex
atmega48.bootloader.unlock_bits=0x3F
atmega48.bootloader.lock_bits=0x0F

atmega48.build.mcu=atmega48a
atmega48.build.f_cpu=16000000L
atmega48.build.core=arduino