initiallyActive is purely for convenience - a way to add an AgendaItem to an NPC's agenda at startup without having to roll your own InitObject / PreInitObject for that purpose. You have to add them somewhere; the NPC's
executeAgenda routine only knows about the AgendaItems in their list. It checks them all, picks the first one where isReady returns true, and then runs it.
You might have a guard NPC with a lot of behaviors - patrolling a route, calling for help if attacked, running away if wounded, heading toward suspicious noises - all of which are always active and ordered by priority, but which are only ready under the right conditions. It would make sense for those AgendaItems to be initiallyActive so your guard starts the game able to react without having to call addToAgenda() in the action handling for any input that might trigger a response.
You could also have an NPC that only does a few, more heavily scripted things - like disarming a bomb - only one of which will be active at a time, and which will always be ready when active. Here you can set initiallyActive to nil, isReady to true, and call addToAgenda() in the code that starts the scene.
Or you could have a hybrid approach - a guard that does the normal stuff and then tries to disarm the bomb once the player tells him about it.