Does the `blocksonly` setting prevent other nodes from sending my node unconfirmed transaction, or does it simply cause my node to ignore them? I've seen this option discussed, but I don't have a clear understanding of what is going on.  Since this setting appears to reduce node bandwidth by as much as 88%, I assume it somehow communicates to other nodes that this traffic is unwelcome, but I don't understand the mechanism.  Can someone elaborate?
This allows the bitcoin node to operate similar to a SPV client.  These nodes advertise their capabilities to other nodes as they peer with them.  A node running in blocksonly mode will indicate that it does not want to receive inv messages from any other peers.  Nodes can supply a bloom filter if they are interested in messages for specific address(es), this is also using the same mechanisms that were designed for SPV nodes.