@Daniel Chaffelson maybe dedicated, is a misnomer, I'm not talking about a business commitment to provision dedicated machines to a customer, but the architecture you built or when your code runs - is it processing a specific tenant's data/workload, or is it just serving random calls who knows who called?
For example, say you have service called calculate, you might have an API that allows a customer to do a math computation (a+b), on it.
You might route every call from any client to a centralized LB that distributes the load among the multiple instances of this very popular service - which handle the calculations as they come in (this is shared...) or the LB might be smart and start an instance (assume this is 0 time difference) - and send all a specific client to that specific instance(s), and calculations of other clients in other instances (the instance can be stopped when work is ended).
So, this is more for tracking how much a client costs/uses, and security than about saving money and billing (i.e. without effective rate-limit per tenant, a single customer might still abuse my dynamic allocation system, but I'd know he used it...
In both cases you can track client actions and bill activity, but in the Per Tenant you can also track resource utilization as well, and increase security (for example if you have a client secret, it will never be shared in the same runtime with other clients...)