I've checked in a fix for this. It was a rather dumb oversight.
With this fix, packages like struct::list can be required in init scripts and used at runtime. Without it, the package would need to be required within the body of the proc in which they are used, which appears to be the case in util-diff-procs.tcl which predates this change.