Here my answer in order to complete this question:
I tried to polygonize a raster data set consisting of many tiles. When doing so, it is necessary to dissolve the resulting polygons, since the ST_DumpAsPolygon function dissolves tile by tile, which leads to cut polygons when overlapping tiles.
Now why does the dissolving not work properly? Probably this is due to the nature of raster vs vector data. Raster geometry is stored implicitly (pixel size), where vectors have explicit coordinates assigned. We all agree that the earth is not flat and hence a regular grid with evenly sized quadratic pixels can only approximate earth surface. Raster tiles do not always really touch each other. There can be an offset of some 0.0...001 degrees. So although you might not see this offset in a GIS like QGIS, the Dissolve algorithm detects this offset and doesn't regard such polygons as touching.
The simple solution to this problem is to buffer and unbuffer the polygons when dissolving. Here a working example:
st_buffer(geom, 0.0000000001)))).geom, -0.0000000001)
Thank you @John Powell aka Barça!
Just be aware, that this solution also dissolves polygons that touch in only one vertex!