「くださる」は「くれる」の尊敬語で、「いただく」は「もらう」の謙譲語です。 その、もとの形に戻して考えると、おわかりになりやすいと思います。 ①「おしえてくれる」 ②「おしえてもらう」 ①は、主語が相手方(敬う対象。この場合は「先生」)になります。 「先生が、教えてくれる(くれた)。」 ②は、主語が自分方(この場合は「あなた=私」)になります。 「私は、先生に、教えてもらう(もらった)。」 ①・②を敬語にすれば、それぞれご質問のように 「教えてくださる(くださった)」「教えていただく(いただいた)」になります。 つまり、主語を間違えさえしなければ、「くださる」「いただく」のどちらを 用いてもかまいません。両方、正しい用法で、同じように使えます。 どちらも、意味・内容は「相手が自分(私)に教える。」ということで同じです。 ただ、主語を変えることで、視点を変えているわけです。 ●「くださる」は