If we start with reasonable assumptions about price/demand curves for transactions confirming "as soon as possible" to "sometime today" (maybe to "sometime this week"), and assume that miners could get together and agree to maximize profit, what would be the profit-maximizing dynamic block size limit?

Would it be blocks on average 50% full? 99% full? 1% full? If you change the assumptions about the demand curve, how much does that answer change?

Concrete toy example to show what I'm getting at (and apologies in advance to any real economists who might be reading this and cringing, I wasn't an econ major....):

Suppose there are three different groups of people with different fee/confirmation time preferences:

"A" : willing to pay up to $1 for transactions confirm in the next block with high probability

"B" : willing to pay up to $0.10 for transactions that confirm in the next 6 blocks

"C" : willing to pay up to $0.01 for transactions that confirm "sometime today"

Lets say there are ten times as many "B" people as "A", and 100 time as many "C". Everybody would be happy to pay less, and assume everybody has a smart wallet that adjusts fees based on past history, what transactions are waiting in the mempool (with what distribution of fees), etc.

How big should miners make their blocks to maximize total fees paid, given that the poisson distribution of block-finding time makes supply of block space inherently variable? Is the best strategy to keep blocks X% full, or maybe to sort the mempool by fee and then include the highest X% ?

"Include all transactions all the time" isn't the optimal strategy, because all of those "A" people who are willing to pay $1 would instead pay whatever the minimum spam fee is.

"Just include transactions that pay $1" isn't optimal either, because the miner loses all of the fees from "B" and "C".

(This is where I hope somebody tells me I'm being an idiot and if I just read chapter 11 of some economics textbook the answer would be obvious....)