A blocks-only node does not participate in transaction relay to reduce its own bandwidth usage and therefore does not have a mempool. The use of compact blocks is not beneficial to such a node since it will always have to download full blocks.
In both high- and low-bandwidth relaying the cmpctblock message is sent. This represent a bandwidth overhead for blocks-only nodes because the cmpctblock message is several times larger in the average case than the equivalent headers or inv announcement.

Example: A block with 2000 txs results in a
cmpctblockwith 2000*6 bytes in short ids. This is several times larger than the equivalent 82 bytes for aheadersmessage or 37 bytes for aninv.
Approach
This PR makes blocks-only nodes always use the legacy relaying to download new blocks.
It does so by making blocks-only nodes never initiate a high-bandwidth block relay connection by disabling the sending of sendcmpct(1). Additionally a blocks-only node will never request a compact block using getdata(CMPCT).
A blocks-only node will continue to serve compact blocks to its peers in both high- and low-bandwidth mode.