It appears that table datasets, when queried, decode byte by converting non-printable/non-ASCII characters into escape sequences. For example, inserting a value that contains the character nul (0x00), when querying, returns the the (4-character) string "\x00". The same happens for non-ASCII latin characters, or any other non-printable or non-ASCII character.
On further investigation, it turns out that this is not only an issue in Explore, but generally with the Table API: Row.getString() uses Bytes.toStringBinary(byte) to convert the byte value to a String.Whereas a Put uses Bytes,toBytes(String) to encode a String into bytes. That is, this simple Test fails if val contains a non-printable char.
Because DatasetSerDe uses row.getString() to deserialize a String, this manifests itself in Explore, too.