I think there are a few edge cases in ATGH that result from that issue (like in the box push method, I check for "Box or girl fell into path of pushing" after moving the box), but it wasn't a fundamental problem for me. Presumably it would be worse when using Update() instead of FixedUpdate(), since you could have several frames of out-of-date collider positions. I guess that's the sort of thing you could avoid by using pure Rects or something instead of Collider2Ds, but, yeah.
Pretty sure since 0 to 16 is 17 pixels, it's a 17x17 area. Though I think Collider2D bounds may be shifted a pixel right and down or something? Since my code does this: (Note that "rect" is created from collider2D.bounds.min and collider2D.bounds.size)
collidersFound = Physics2D.OverlapAreaAll(new Vector2(rect.xMin + 1, rect.yMin + 1), new Vector2(rect.xMax - 1, rect.yMax - 1), layers);
You're misremembering - Golems don't actually move you when you stand on them. I explicitly avoided platforms that moved on their own in ATGH because it would get awkward with the grid-based nature of it. What it does have is carrying Brooke (or bombs) on boxes. In all the cases where boxes move (being pushed, flying through the air, being carried and thus aligning with Asha), the box's old position is saved before it moves. After moving, it checks if Brooke (or a bomb) is above it*, and if so, calls brooke/bomb.getCarriedByBox(xDiff, yDiff). This simply attempts to move them that much one axis at a time, stopping at walls.
* To be specific, bombs are checked for in the push case only (they won't ride on thrown or carried boxes - even getting a bomb on top of a carried box is an edge case I didn't consider until just now I guess), and girls are only checked for in the non-push cases (Brooke can ride on carried and thrown boxes, but boxes are "pushed out from under her"). Just because the different cases are meant to work differently by design.
The way I keep you from pushing Brooke up into ceilings with carried boxes is sort of a cheat that won't work for every game. I basically directly set the position of carried boxes to be above Asha at all times, and then just kept clipping situations from happening at all. If Asha is carrying a box, she simply can't jump unless there's room above the box. And if that carried box is carrying Brooke, Asha can't jump unless Brooke has room to jump. And she can't walk right/left if the carried box has room.
(Yeah, I know you can carry a box and jump up into a falling Golem and it somehow works out okay, but I don't think I coded anything specific to make it work that way... It's a mystery.)
So, to address it more legitimately... If you make getCarriedByBox() return what direction(s) Brooke encountered a wall in, you should be able to use that info to be like "oh, this carrier object is pushing the other object into a wall, let's move it back." Or actually, maybe more useful would be to return a Vector2 telling the carrier how much it needs to "step back," based on the xDiff/yDiff passed to it and the distance the object was actually able to move.