I see that custom capabilities are meant to be one-time charges. However, trying to do custom capabilities with membership levels creates a lot of extra membership levels.
i.e. Bronze, Silver, Gold, with +custom1 and +custom2 would require 12 membership levels.. which if you then lay out in a table of features becomes pretty large. (Base Package, Base Package + custom1, Base Package + custom2, Base Package + Custom1 + Custom2).
Thinking along the lines of the GoDaddy model, where you sign-up for the base product, then there's all kinds of upselling done prior to the close.
We're using s2Member Pro.