It is a little bit more complicated. SAAJ is an old Java API for used to manipulate SOAP envelopes, so sending binary attachments can be done in a sane way (that is not as a BASE64 encoded string in message body). SAAJ is a sort of low level interface, you need to construct SOAP envelope "by hand" in your code and add attachments to it.
If you don't need to work with legacy code and you want to work directly with SOAP envelopes, then look on JAX-WS Dispatcher and Provider interfaces.
MTOM is a another beast. It is not a full web service API - it is specialized way of sending attachments. It can be used by any "true" web service API like JAX-WS or SAAJ (if you manage to force SAAJ to work that way).
MTOM is (almost) always used with XOP, a more efficient way to send binary data, as compared to BASE64 (which has large overhead). Attachment is sent separately as MIME attachment and the MIME type is handled properly (that used to be an issue for Java-Microsoft technologies interactions).
Nowdays forget about SAAJ, use JAX-WS + MTOM support which is provided by most JAX-WS implementations.