Hotels that charge in TL tend to be cheaper. Not just a better exchange rate (because you know exactly where you are), but they tend to be less 'modern' establishments and the owners aren't as switched on. Just my experience, but the cheapest places I have stayed are the ones that quoted me in TL and took TL cash as payment. This, for me, has been true from Istanbul through to Malatya. The 'posher' and arguably better hotels usually have their rate in Euros. You can catch a cold here if you pay by credit card as the Euro charge will then be converted into TL and this will be done at the 'discretion' of the hotel owner, and some are more discreet than others! Carrie is right that the banks also take their cut, but in my experience any unexpected charges (and there aren’t always unexpected charges) tend to be from the hotel.
For example, I regularly stay at a hotel in Northern Cyprus. If I am quoted a total cost of say £400 and then fax my credit card details over for it to be charged in TL. The bill would almost always have an extra £25 on it, partly due to the bank charges but also due to the rate which the hotelier decided to apply. I got used to this and always factored it in. I still stayed there and if I had wanted to avoid this charge I could have simply transferred the funds in Sterling into their UK-based account.
Uncle Steve’s moral is pay in cash if you want to know exactly where you are. I take enough Euro cash to cover the Euro rate quoted by each hotel and then there is no argument nor any unexpected variance. Furthermore, many hotels will give you a discount of up to 10% for paying in cash.
Apologies for the sermon.