In answer to the question How is OP_RETURN used and why was it introduced in the first place?, theymos responds:
An important aspect of OP_RETURN is that outputs which use it in the standard way are provable unspendable. This means that nodes can immediately remove such outputs from their unspent outputs cache and potentially forget about them altogether (though Bitcoin Core doesn't do this yet). This makes OP_RETURN transactions much less expensive for the network than other ways of stuffing data into the block chain.
If this is the case, what's the debate around filtering and limits? If the outputs can be forgotten about, then why would someone spamming be an issue?