Weird blender game engine python problem
There is one notable difference between the cube and the building -> The cube has a unit scale (1, 1, 1), but the building is scaled down. Since spawned objects adopt the local scale of the spawner, the behavior you observe, while not desired, is perfectly normal.

To get desired behavior, you need to specify a spawner object (typically an empty) with a unit scale, and use that to spawn the relevant group.

So, the script would now look like this:

def decimate(cont):
    self = cont.owner
    scene = self.scene
    spawner = scene.objects["Spawner"]
    spawner.worldPosition = self.worldPosition
    spawner.worldOrientation = self.worldOrientation
    scene.addObject("cube_parts", spawner)
    self.endObject()


Demo: break_demo_spawner.blend