The recurring payments capabilities of gateways, such as Braintree, Auth.net, etc. typically are not as robust as the recurring payments capabilities of the companies that specifically focused on that capability such as Chargify, Recurly, Zuora, etc.
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.
I just wanted to clarify that Braintree does has additional recurring billing features that are not mentioned here. You have the ability to set up multiple plans, modify individual subscriptions, created add-ons and discounts, create one time charges and more. For a more complete list of features you can check out our website: http://www.braintreepaymentsolutions.com/services/recurring-....
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...