Actually, node requires to be connected at least with one node that relays all desireable transactions.
Even if they are connected to a node that relays all "desireable" transactions, that does not necessarily mean that the node will have all of those transactions stored somewhere in order to properly validate a block
Ok. Node requires to be connected at least with one honest node (that relays all desireable transactions
and blocks).
A blocksonly wallet still receives transactions when they come in a block
Ok. That makes sense.
BTW, I have an alternative proposal. Just an idea:
In the future, size of block can reach several hundred megabytes, that imminently cause unacceptable large delays from the moment of block generation until it is completely propagated over the network. At the same time, everybody has a large part of transactions in mempool, so there is no need to transfer them again. It is sufficient to transmit only the header, missing transactions (usually it is coinbase TX) and to define a standard algorithm to construct the block from existing transactions. For example, miner could relay just an array of TxIds.
You are reducing the security of people running blocksonly nodes as they are trusting that blocks that they receive are valid with regards to the transactions inside of them being in the mempool at least X seconds
Yes. But security is reduced very insignificant. Similarly, node can receive a regular orphan block and consider it valid.
bypassing the rule for some time after the proposal deploys is not going to help at all
Why?
this rule will force a node which just started to reject the blocks because it doesn't have a populated mempool to begin with
This behavior for the case if nothing is done at start. What the problem? Just wait a few blocks and rejected chain becomes valid.
A node can most certainly receive a block before transactions are received.
How often? Miners have to relay transactions before including them into the block.
ALLOWING INVALID BLOCKS MEANS THAT MALICIOUS THINGS CAN BE DONE
I don't propose to allowing invalid blocks. Undesirable blocks are valid but they simply becomes orphan because most of nodes reject them.
Has OP stipulated that his "temporarily invalid" block thing is only applicable to certain consensus rules?
Initially, I called it "temporarily rejected block that consists transactions considered as non-standard"

Sorry, if misled. Now changed this to "undesirable" or "block with spam". But I've never said that chain is selected only by amount of work in it.