If it is rationalized it start to work properly.
Interesting! And DiscretizeRegion[]
seems to be annother way to make it work, e.g.:
outer = RegionDifference[Rectangle[{-1, -1}, {1, 1}],
DiscretizeRegion@
RegionUnion[Rectangle[{-0.9, -0.9}, {0.9, -0.4}],
Rectangle[{0.4, -0.9}, {0.9, 0.4}]]]