@crooked-daybreak-55253 is writing up an issue about how the usageSchema could become a specification for all inputs to a resource, so you could even run Infracost against just the usage file without any Terraform/other IaC code. I'll let him explain more when he has the ticket.
But with this in mind, I think per resource is the ideal. So we separate what the inputs are for a resource, and the logic for how each IaC tool maps to those inputs.