Just looked it up, fairfx charge £10 to refund any leftover money - as you say that is not a problem if you can leave the currency on the card for another trip.

Be aware though that fairfx cards expire after two years and they charge £9.95 to renew unless you top up with at least £300 worth of currency at the same time. If you are going and using the card regularly it is obviously not a problem but we are not sure when we will be going next so would possibly either have to pay to get a small amount of money back or pay to renew down the line.

Some of the other cards last longer or have smaller fees to get a refund but charge £1 - £2 per month once the card hasn't been used for 12 months or more. For some people these cards work out really well but I just wanted to make the OP aware of some of the terms and conditions so they can make an informed choice.
I thought it was only credit cards that charged too because getting currency is like getting cash, however I was looking at rates on the Sainsburys website and it came up with a warning that debit and credit cards may charge so I looked up the terms on the barclays site where it says:
'Obtaining foreign currency or travellers cheques anywhere other than a Barclays branch or via Barclays Travel Line 2% (minimum £1.50, maximum £4.50)'
I think it is appaling that they can do this and refuse to pay which is why I withdrew cash and bought that way.