This is a good question because you would assume you could do what you are after, but as far as I know you can't yet. From the docs on sharing of parallel jobs across projects in a collection
Currently, there isn't a way to partition or dedicate parallel job capacity to a specific project or agent pool.
I considered trying to do buckets via capabilities on a subset of my agents, and then companion demands in the pipelines, but that will not work either because hosted pipelines don't work with demands.
In my case we had some greedy pipelines that fan out into multiple parallel jobs, that we had to update to run sequentially with dependsOn
for each job. I think if your case is relatively simple you could potentially check the queue length or number of running builds in a first stage but that could get complex and might be tough to scale.
Hopefully this feature gets added soon. I will look to see if I can find one to vote up on the developer community forums. I am also interested in other ideas on how to solve for this issue!
Edit found a feature vote on it here