Kinetic deflection has never seemed like that good an idea to me. The coupling of the impactor's limited energy into the body seems too unreliable to induce a predictable ∆V. Worse, either an off-center impact or a heterogeneous asteroid composition seems too likely which means the vector angle of the ∆V is poorly controlled.
My favorite option is landing some sort of ion engine on the surface and using low, but relentless thrust to push the asteroid in some desired direction. It seems to offer the advantage of better control, interim feedback, and adjustment as well as a greater total ∆V over time. (Extra credit if the device can harvest dust or rock from the surface to provide mass for the thruster).
I also liked the nuclear option. What it lacks in efficiency is more than made up for in total energy.