SBE is better if you don't have (much) in the way of message format evolution
and you intend to read each message in full.
Cap'n Proto has a way better compatibility story, and there's no need to read the entire message just to read a particular part.
SBE is very good for its intended use case: high-frequency trading with tiny, but tons, of small messages. Cap'n Proto is better for use as a stable (but evolvable) message format between systems (e.g. RPCs), or for on-disk storage if you've got a database (like LMDB) that doesn't force you to copy read-only data.