My take - you should be using both:

Example - 

<!-- this controls failure action on the dial-plan level -->
<action application="set" data="continue_on_fail=ALLOTTED_TIMEOUT"/> 

<!--the fail_on_single_reject is key here - it is at the call leg level and fails such that a second call is not pushed through to the fail-over carrier-->
<action application="bridge" data="{leg_timeout=10,fail_on_single_reject=ALLOTTED_TIMEOUT}user/1001|user2/1001"/> 
<action application="bridge" data="{leg_timeout=30,fail_on_single_reject=ALLOTTED_TIMEOUT}user/1002|user2/1002"/>  


So in this scenario - you have "continue_on_fail" to ensure that 1002 WILL BE called if 1001 times out, and fail_on_single_reject to ensure that 1001 will not be called a second time through the failover carrier.

​Phil