Spreedly doesn't provide the same functionality, but it's great if you just need a basic recurring payment solution without the frills or deep API integration.
I haven't worked with CheddarGetter or BrainTree directly.
Middlemen in the payment business have a habit of going down when you need them most (when your business is successful and you are growing like mad, have a bunch of employees and suddenly your income evaporates).
iBill, DMR, now Jettis in trouble and many others besides.
All it takes is one big VISA fine for not following procedures and these operations will fold like a house of cards.
Let me put a big +1 in for BrainTree, then. Especially when coupled with something like their Ruby gem (http://rubygems.org/gems/braintree , written by them, not even someone else's implementation) or ActiveMerchant, it's really, really easy to integrate. Plus, since when does your card processor have articles about their git process? (http://www.braintreepaymentsolutions.com/devblog/our-git-wor...)
I have no affiliation with them other than being a happy customer.
If you just need to charge the same customers exactly the same amount on exactly the same timeframe, then the capabilities of gateways such as Braintree may be ok for you.
But typically SaaS companies and others with multiple plans, additions, features, extra one time payments, etc. need an additional layer of logic on top of those capabilities. You can either buy that logic or pay Chargify, et al for it.
Basically, braintree has a 'vault' feature where I just add a 'vault_id' attribute to my user model, then call 'response = GATEWAY.store(credit_card, :email => current_user.email)' to send their info off to braintree. Later, that lets me send a charge with their vault_id, and it charges their card.
It's probably just slightly lower-level than Chargify's...
You can use it with Braintree and have complete control over how the billing runs.