While it's possible to send messages containing any byte, expect can only match until the first null byte since both regexec and strncmp expect a null-terminated string.
For example using a simple echo server
send "\0xFFFoo\0x00Bar" expect "\0xFFFoo\0x00Bar"
will not match, whereas
send "\0xFFFoo\0x00Bar" expect "\0xFFFoo"
My knowledge of C is fairly limited so I do not know if this is possible without jumping through some major hoops. I also do not know of any workarounds (sans writing your own protocol handler).