To me, the difference is more connotative.
Internalizing something carries an implication of understanding and comprehending it well. If I internalize a new idea in class, I learned it and understood it inside and out.
Engraining, on the other hand, doesn't carry that implication of understanding. You may understand it very well, but if it's engrained in you, you've basically carved it into you (which is the literal meaning of engrain). Maybe you repeated it 1000 times. Maybe you wrote it 1000 times. You can now recite it back to me. But you don't necessarily understand it inside and out - that isn't implied.
For example, in many religious households, beliefs are engrained into younger children. It would be strange to say that the kids have internalized the beliefs/teachings until they are much older. While they are kids and don't really understand exactly what's going on, they have simply memorized by repetition.