There are a number of people who basically "prat about". Constantly changing their minds and plans, they often need a lot of servicing so to speak and can cause queues at booking offices windows as they consume time. I can usually say to myself "they'll be back wanting a refund" and be right you get to know the sort. The £10 fee is grizzled about but presumably then acts as deterrent to them doing it again so hopefully makes things easier for other customers as staff are not tied up in dealing with them.
I agree totally with there being a fee for changes made in person. However, for changes made entirely electronically, for example of tickets not even picked up yet, I see no reason why these should be charged at more than the raw cost to the retailer of selling and subsequently refunding the ticket.
As an example, I was recently unable to travel on a ~£15 ticket booked months in advance (a refundable one though), as I was ill on the day of travel. I hadn't picked up the tickets yet as I was going to do this at the station just before boarding the train. So why is it fair to charge a £10 fee and only return £5?
I appreciate that the fare I was paying was significantly below the highest possible 'walkup' fare, but I nevertheless fail to see how it can possibly have costed the TOC I bought it from £10 to receive a £15 debit card payment and subsequently refund this again. Probably no more than 20p in reality, as no human contact was involved anywhere in the process.