One thing you could try is to place a very small invisible object on the border of the ledge, then place precisely the origin of your character object so that it is correctly placed next to the ledge during the climb animation. For example, if your character is hanging to the ledge by his hands, place the origin on the characters' hands for this frame. Then just set the character's position to the invisible object's position as soon as he is attached to the ledge.
I wouldn't bother to move the character's Y position while he is climbing if you have a climb animation. Adjusting the origin for each frame seems more consistent.