In Kafka the headers are stored as byte arrays rather then string. OpenTracing with Jaeger inserts a string header uber-trace-id which works. However when it tries to read it as a string when the message is consumed it presumably does a toString which doesn't return the actual string since the header is returned as a byte array.
This can be worked around by using a KafkaHeaderDeserializer as per here:
Note you need to deserialize the kafka.TOPIC as well since the KafkaSpanDecorator tries to cast the header as a string which fails the header is returned as byte array.