Light is not a very reliable form of communications.
Batch programming is a problem because there's no easy way for each device to report errors without a protocol.
IR would be better and a lot faster but you need to decode the IR signal.
All this points to quite a lot of code and a bootloader should be small or there's no room for the program.
That said it can be done, have a look at these little fellows
http://www.eecs.harvard.edu/ssr/projects/progSA/kilobot.html
They are all programmed from a central IR transmitter.
Whether or not it's worth the effort in your case it up to you
Rob