I've made my own board based on the $50 dollar robot board and when I try programming it with my USBtiny in AVRdude it just gives me an error. But the funny thing is when I swap out the MEGA168 for a MEGA8 it works. I've tried this with multiple MEGA168's and even a MEGA328P.

Not familiar with AVRdude but AVRISP needs you to tell it which processor you are trying to connect to. It checks that the signature read back from the chip is correct for what you have told it to expect. ie each ATmel device has a unique signature so it can be identified.