I think the simple answer is because it makes them more money than it costs them. People like quick connections and don't want to hang around airports for 3 hours. People who like that would just go to Lufthansa or Air France instead if BA made them hang around Heathrow for hours. For every person they pay out 500 odd quid to there is probably 50 people who pay their fare and get their connection just fine.