Ideally you're going to want the arduino to know the RPM. That way you can know exactly how much you should be retarding the timing. You can live without the RPM, but you'd just have to have a fixed delay built in, so it will behave very differently at (say) 3000rpm vs 6000rpm (Eg a 4ms delay is a different angle of retard at difference RPMs)
Either way though, I'd simply inline the arduino with the control wire to the CDI and adjust the signal when you need to.
Eg You detect that you're changing gear, so instead of just passing the ignition control signal through unchanged, you would introduce a delay.