Well its not recommended to run recovery scenario on every step as QTP needs to check the triger satisfaction condition on each and every step. For a data driven scripts it will slow down the script, which may not be noticable in case of a non data driven script.
I have seen Activate on every step cause a very noticable slowdown in execution.
Activate on error means QTP will check for the trigger event only if it detects an execution error, something like "object not found" or "object disabled." The appearance of a popup dialog is not in itself an error condition. The script can keep on running until the presence of the popup makes it impossible for QTP to execute some step successfully.