One other factor is how much work you’re willing to do to get the best return. For me, a program that gives me something other than cash (say, gift cards) isn’t generally worth the aggravation. (One danger with something like ThankYou programs: you sign up because they let you get $X for Y points, with Y very large, but before you get that many, they drop that reward.)
Similarly, with a scheme that requires putting $X on a card to get $Y back, then moving to a different card, it’s easy to accidentally put too much and have no way to get those reward dollars out without spending another $X for a second reward. So I mostly stick with long-term options.
I use Amex Blue Cash Everyday (3% cash back at supermarkets, 2% at department stores), Amazon Chase Visa (3% at Amazon, 2% at restaurants and drug stores), and Chase Freedom (5% for a category that varies by quarter). I also use store-branded credit cards at LL Bean, Target, and Lowes, since they offer better than 1% when shopping there. These are all no-annual-fee cards that give you cash or statement credits, and have reasonable payment windows. They all give 1% back on other categories.
This all means I carry just two cards for regular purchases (the Amex and Amazon, with the Freedom swapped in for one or the other in those quarters where it pays better), plus two store-specific cards (Target and Lowes).