A join bind triggers immediately a user joins one of the bots channels and therefore does not give time for the bot to update a chanlist for the channel.
You could use a utimer within the join binds's proc which calls a second user defined proc in a few seconds, thus giving time for the chanlist to be updated. One second is not really enough. Then use your chanlist code in the second proc. You will also have to pass all the other arguments you need from the join bind proc to the second user defined proc.
The exact same thing happens when testing to see if a nick that newly joined the channel has op status. The join bind would not give time for channel services to op nick.
Not that I know of, other than ensuring resources are not wasted on extensive pointless tasks. I think you will need an expert on the inner working of eggdrop to give a definitive answer though.
If all you are doing is logging the channel numbers in the partyline, I wouldn't have thought it warranted any sort of special effort.
We have an authorization-system and the bot is part of it.
If he restarts for any reason, he just shall kill all users in the channel, so they have to reconnect und re-auth with the bot.
try bind the raw event of the /names or /who reply from the channel, since it takes a while for it to show on the dcc party line, eggdrop should request this information when it first joins the channel.