Can I set a premium for a $20 minimum on a recurring contribution, but $80 for a one-time contribution?
I just came across this question and we have solved a similar problem a few years ago, i.e. we want to count the total value of recurring contributions (e.g. a $10 recurring should count as much as a $120 one time).
What we do is to rewrite the function used for computing the premium amount. The javascript is in templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl (copied in a custom extension).
Simply adding the following to the function get_amount do the trick :
var isrecur = $('.is_recur_radio-section input:checked').val();
if (isrecur == 1) amount = amount * 12;

I suppose it's possible to add some more complex logic.
The fact that we need to update a core template file is not ideal for maintenance but it's a rather small change so it's easy to keep track of it and re-apply the change when we upgrade CiviCRM.
EDIT 2021-03-22
The solution above is not enough: there is validation in CRM/Contribute/Form/Contribution/Main.php that require adjustment.