I had one hen who insisted on laying on top of the nesting boxes, too. Being it was just out there in the open, the other chickens started eating them if I didn't get there first. I tried to train her to lay elsewhere by putting stuff on top of the box, but she would just push it off and lay, then the other hens would eat the egg. Solved the problem by building another box and putting it on top of the others right where she laid. She still lays there, but because it's now somewhat protected, the others leave the egg alone. I wonder who's training whom? LOL!
Liz