A great question, and before last week I would have said, no, it's better to create separate contribution pages for one-time vs. recurring contributions.
But then I saw how GiftTool does it (e.g. here: https://www.gifttool.com/donations/Donate?ID=1992&AID=1663) and realised you could do that in CiviCRM as well - it's just using a little javascript.
In other words, you could create all the payment amounts for both one-time and recurring on your form, and then use javascript to hide the options that aren't appropriate for the current recurrence/non-recurrence selection.
There would definitely be some assembly required, but it sounds like a worthwhile feature.