The problem is that collators have no idea how long message processing may take. And so limited amount of resources are allocated essentially for free
I havent digged at the problem so deep, but now I did. accept_message only set Infinity limit for gas into VM, what allows TVM to safely execute method. In fact gas amount change happens in Transcation action phase based on computed phase. I wonder about such thing - if you used blockchain computation power - you must pay for it, even the block was discarded. accept_message should be used ONLY with external messages cause they don't store any grams in the body.
I think the TON behavior is correct, accept_message should be used only for external messages, any checking shouldn't be applied