It doesn't cost them a cent to do the transfer since they automated things like that (including item restoration and stuff). They are just a bunch of greedy asshats, aka a business. Tbh, I don't see anything wrong with it though.
Furthermore, I have transferred one, ONE single char in my entire history of playing WoW and that was during 50% sales on transfers^^ I believe most people are like me, if they really want to play on a new server, they f*ing make a new char on that new server.
Despite that, there are people out there (like my best friend) who don't give a shit about money spent on video games and well... he transferred his old rogue for the 7th time in his WoW career earlier this week, not his only char he transferred. He didn't want to wait for his bot to level a new one on our new server... I know, there's quite a few things wrong with him regarding gaming. My point is, there are people who want to spend their money for time-saving things (like not needing to level a new char) or cosmetic things, so why shouldn't charge Blizz them? Free money is free.