If I'm not mistaken, I think the current maximum for op_return is dictated by MAX_SCRIPT_SIZE which is 10kb, but in theory you could mine a block that is composed of 1 transaction with multiple op_return outputs, reaching a total of about 3.99 MB between them, but you would have to do this by mining your own block since by exceeding the policy -datacarriersize=100000 this tx would not be included in the mempol.