I've caught kids mid-theft. If they are younger than teens, I tell them that they know stealing is wrong, and I will have to tell the management if they don't put it back, now. They do, of course. If I have the time, I stand there until they leave. If I don't have time, and they're still hanging around, I tell the management anyway, because I figure they're just waiting for me to clear out.
With older kids, I figure that only real consequences are likely to scare them straight, so I report it immediately.
I shoplifted as a child – my mother was so overbearing with my small allowance that I think I figured taking things was a lesser evil than spending my holy savings. But I knew it was wrong, and when a store manager caught me and took me aside and told me how hard it was to make a living when people kept stealing from him, I gave up the habit (it took several tries, because it was a habit). He didn't even threaten me with The Law, he just explained, with sorrow, how hard I was making his life.
My daughter was caught shoplifting with a friend in her teens. I did not try to protect her from the consequences. I could see that she was troubled, sorry, annoyed (with the system, herself, and her friend), a whole range of feelings, and that was good. She had to make restitution (or pay a fine, I forget which) and attend some Saturday classes on stealing. I think it was exactly what she needed at the time. You did the right thing. It may have been exactly what he needed.