* Keeping an internal ban list? Check.
* Removing stale bans from the channel? Check.
* Keep the bot opped? Check.
* Has built-in user management? Check.
* Uses telnet or DCC to manage the bot? Check.
All that features have it's use, but most of the time they are not needed. Instead people new to eggdrop have to "fight" with that features.
* User keeps getting banned when he enters the channel, even after an op removed the ban. Channel op has to learn about the internal ban list.
* Eggdrop removes all bans after 180 minutes (default).
Eggdrop admin has to disable that feature or add the user to the internal ban list.
* For non-channel admin bots, the bot does not need to be op.
Eggdrop will complain about it.
* Built-in user management uses part of the hostmask.
You got a new ISP, good luck restoring your access to the bot.
And it doesn't play nice with the accounts from IRC services.
* DCC doesn't work behind if you are behind NAT. And using telnet means using a different program.
In the past, I tried to solve several of that problems with Tcl scripts, with variable success.
* Allow the bot to be managed through commands in IRC.
* Bind to raw events, hide them (return 1) from eggdrop and send a replacement command through an internal API.
I had to use that to make eggdrop aware of the popular +qa modes (channel owner and channel admin)
Or replace the user host so eggdrop sees a fake host with the account name in it. Solves the problem with the user management through hostmasks.
In the end, I gave up. I wrote an IRC Bot in Tcl and re-implemented the Tcl API, so I could use the old eggdrop scripts.