Reject or refuse to relay a valid transaction Under the Bitcoin protocol, how much control does a node have on how a transaction is dealt with once received? Can a node reject a valid transaction? Can a node refuse to relay a valid transaction to neighboring nodes or is the transaction relayed automatically once validated? If not relayed automatically, why not? Why give a node the option to control whether or not a valid transaction gets relayed?
Nodes are just software, at the end of the day.

The Bitcoin Core software will automatically relay standard valid transactions provided they meed the minrelayfee.

It would be fairly trivial to modify the software to relay only if certain other rules are met, however. You could easily do this without impacting the rest of the node functionality.

Usually, the node broadcasting a tx will broadcast it to multiple peers, so even if some peers enforce additional relay rules, the transaction will be broadcasted further by those who don't.