I think you want to turn on the axis constraint by clicking the handle and then drag it from the circle? I've found that dragging it from the handle will usually end up snapping it with the same offset as the point you clicked to the vertex you're snapping. It's really annoying...