is there any case when someone would choose use_m2crypto=False when m2crypto is available?

If not, then I would say remove the flag and the if statemnet, and always call pbkdf2_m2crypto.  It will fall back to pbkdf2 when anyway.