I worked for a points loyalty program, and the customer always pays. The bank knows their market well, they know the redemption rate of points for different demographics and they set the annual fees on points earning cards appropriately.
For a small number of very diligent points hack customers, the bank loses money on this and the customer wins. For a larger proportion customers get back roughly what they paid in fees.
Then for the remainder the points eventually get written off or redeemed for value that is far lower than the fees they paid.