I agree with you about your concerns, especially regarding scalability, resource management, and the complexity of handling multiple tenants efficiently.
For the limitations :
As you've noted, Cosmos DB has a limitation of 500 containers or databases per account and 50 accounts per subscription, summing up to a theoretical maximum of 25,000 containers for a single subscription. If you are dealing with an SaaS apps with a rapid growth or a marge number of tenants, this won't be the best solution in my opinion.
Also, Cosmos DB accounts and containers can add complexity, especially when it comes to provisioning and managing resources in a dynamic way.
With ARM templates and the Azure Cosmos DB .NET SDK to automate these tasks, you can bypass some of the complexity, but it still requires more effort in automation and monitoring infrastructure.
What do you need to consider for multi-tenant architecture?
If applications have multiple tenants and if there is only one Azure Cosmos DB account it is recommendable to use a single client instance per each account On the one side, this is a efficient way for scaleable management of multiple accounts but the problem might occur with internet connectivity since the limit of the compute is enforced. The database-per-construction technique (1 per each customer using either a database or a container) provides the highest level of isolation and capacity but at the cost of greater complexity and resource divide. Collaterally, this can be handled through use of a multi-tenant architecture with shared resources, where partitioned data is determined by tenant ID. However, you will require thorough design to overcome noisy neighbors problem and guarantee security and performance isolation.
And for development ?
Balancing the need for scalability and flexibility against the risks of overengineering is an MVP's main priority, in particular given its embryonic character. Developing a multi tenant architecture on the first instance may take a long term and cost to development in terms of time and cost. It can be more practical to develop a simple architecture and then strategize for scalability when your user base increases.
As a starting point it is important to create an application with prospects to easily develop it in the future. This implies making sure that your building can grow by adding more complex multi-tenant solutions, but the existing infrastructure can support the future needs.