For the background, I'm quite new to Boost and for me it is somewhat arbitrary that everything is mandatory but finish_edge. The reason, however, seems to be historical: I recently saw that, at least in Boost version <= 1.39, there was no finish_edge-event.
That is why it is (or at least is trying to be) optional. Visitors from before that event was added would become incorrect if it was not optional, leading to compatibility problems. Making all of the events optional would be possible as long as Boost.TTI could detect all of the signatures that are in use for them currently.
If it's possible for Boost.TTI to make finish_edge optional, then it is also possible for the other events; their signature is almost the same. IMO it is natural to make all events optional or none. - Alex