Yes, that could happen - the behaviour you mention is subtle. Every collision generates an event that is sent to both objects. When a bullet moves and hits a saucer, the hit() method will mark the saucer for deletion, and generate a new saucer. If the saucer also moves that same step (it wasn't actually deleted yet) it will move and hit the bullet, again generating an event for both objects where hit() again generates a new saucer.
It doesn't really matter for gameplay (only 10 points are added either way) so it remains.