Hi Martin,
Here is a simple Polygon producing an invalid MultiPolygon made of two overlapping components :
Maybe related to cap_square or join_mitre options though.
BufferParameters(0, BufferParameters.CAP_SQUARE, BufferParameters.JOIN_MITRE, 10.0);
dist = 0.016986392749407057
POLYGON (( 456250.8302317833 6234702.580742284, 456250.1749609392 6234701.14307723, 456231.5018382939 6234710.059491986, 456231.89092938113 6234711.497619587, 456237.5900408879 6234708.814401538, 456237.62898463884 6234708.765721849, 456237.61786614324 6234708.801301035, 456250.8302317833 6234702.580742284 ))
original

buffered
An early adopter