I think the way to go is a mix of the two. It is covenient for companies to get guaranteed money in advance. As for customer it's way cheaper to start with usage based model. This is because a lot of users are underusing their services.
This at least is the case in hosting industry where overscheduling is a big thing.
So best scenario for customer would be a pay per usage for low usage and subscription for moderate to high usage. At least this is what AWS is doing and I believe this is fair for both bussiness and customer