A NODE_BLOOM service bit is a very reasonable
and simple way to do exactly that, and is defacto what implementations
that don't support bloom filters do anyway.

BTW, I find it curious that any nodes have code to disconnect peers that send Bloom filters. It shouldn't be necessary. Bitcoinj is the only large scale user of filtering and it will disconnect itself if a peer advertises support for a version lower than 70000. If a node advertises support for this version or higher then it is supposed to implement BIP37.

It sounds like some node authors decided to advertise support for a protocol version they didn't bother implementing, which would be a bug.