To my knowledge, currently there is no limit on the maximum number of clients. However, the lack of a limit at this time does not imply there will never be one, although if a limit is applied I’m sure is one sufficient for the majority of use cases. If you have an idea on the concrete number you’re looking for then do update your question with that information and some context around the need for the numbers in question as that is always valuable information to have for analysis.
With regards to rate limits, if you haven’t done so already you should check the reference documentation. For actual concrete numbers on the limits you should always check the associated HTTP headers included in the response of endpoints that are subject to rate limits.
Having said of all of that, in general the debate of using a end-user grant with refresh tokens versus going with client credentials is more centered in the actual need of a user identity when the calls are performed. In particular, with a refresh token you’ll get access tokens associated with a specific user and that represent the ability of an application to perform certain operations on the behalf of the user while client credentials issue access tokens that are associated with the client application itself.
Another thing to consider is if you need OAuth2 or if another called authentication mechanism can be used. For example, if a subset of the services are in a controlled environment with no public access and are all controlled by the same entity then you may use other authentication mechanisms that are less complex.