This example of outrageous hackery does appear to do the job. A bit stinky though...
myJson = jsonencode(toSend);
outStream= java.io.ByteArrayOutputStream();
gzipped = java.util.zip.GZIPOutputStream(outStream);
gzipped.write( uint8(myJson));
gzipped.close();
closedBytes = outStream.toByteArray();
messageBody.Payload = typecast (closedBytes, 'uint8');
request.Header.addFields(...
matlab.net.http.field.GenericField('Content-Encoding', 'gzip'), ...
matlab.net.http.field.ContentTypeField('application/json'))
response = send(request, uri, opts);
% To decode the stream to check ...
% someStream = java.io.ByteArrayInputStream(typecast( messageBody.Payload , 'int8'));
% gzipInStream = java.util.zip.GZIPInputStream( someStream );
% inReader = java.io.InputStreamReader(gzipInStream, 'UTF-8');
%
% aTest = char();
%
% data=inReader.read;
% while data ~=-1
% aTest = [aTest, char(data)];
% data = inReader.read;
% end