If I understand the specifications correctly, there is a semantic difference.
Element
A base64Binary contains arbitrary binary data that has been encoded as base64, which makes it basically a string (or at least compatible with a string).
On the other hand, strings contain printed characters that (as a rule) comprise words and sentences (natural language). They cannot contain arbitrary (binary) data, because some characters are not allowed.
You can use base64Binary to indicate that the decoded data is not suitable for human consumption, where string is read / printed.
source share