Yes, the reverse purchase logic would work for any purchasable, not just user upgrades.
Tactically put, the add-on does four things:
Provides a refund framework for providers - Defines the supportsRefunds() / refund() interface that any payment provider can implement, plus the...