My son stole something from a hardware store, and I made him go back in to return it and tell the manager himself. I called the manager first and told him not to tell my son it was "okay" because it's not. They handled it great. Having to admit to the guy that he stole the item was difficult and humbling for my son. It never happened again.
So, I think your son should have to pay for what is damaged (although I'm not sure how much a child that age understands about money), but I think it's more of a lesson if he has to confess to the teacher. I would not prompt him or do the lead-in for him. It's not just enough to say "sorry" - he has to go through the action of telling the teacher what he did, handing her the items, and facing her. That should do it.
The second problem you have is the lying about it - saying the marbles came from friends. You can address that by showing your child that you figured out the truth and checked on him. Let him know that lying doesn't pay - you have to keep lying to cover it up.
I think you have a handle on it and are reacting appropriately.