I've been thinking a lot about loyalty programs as we finish up our renovation and move toward re-opening (lot of down time right now). I've read quite a few white papers on this but am by no means an expert. Here's an example from Stanford: http://www.gsb.stanford.edu/news/research/mktg_viard_rewards.shtml
I'll try to summarize it: The purpose of a loyalty program is to change customer habits. For example, setting up a "get your 10th oil change free!" loyalty program would have the goal of getting customers to do oil changes at your shop rather than wherever they felt like going. However, research has shown that the bulk of customers are not swayed by that any more than simply doing a reputable job, good service, and competitive pricing. After all, a "10th oil change free," is only a 10% discount on an already fairly cheap service.
Additionally, most loyalty programs reward "loyal customers," which are by definition, customers that are coming back to the shop regularly anyway. This defeats the entire initial goal, which is to change consumer behavior. If they are coming back to the shop anyway, a loyalty program is unnecessary for them. You can still certainly do it for them as a favor, but do not kid yourself that it is what brings them back.
In general, the paper summarizes that the loyalty program $$ could be spent much better elsewhere.
Again, I am not an expert on this at all ... just something I have been thinking a lot about as we develop our overall marketing plan. There are plenty more research papers out on this.