The source command simply loads a file, into the global memory namespace.
If your example, you use the global command in the proc. There is no need to do this. The global command is to import variable names, that exist globaly, so they may be used localy (which they are not).
source scripts/script.tcl - it means that this tcl file will be in use. And binds, procs and other [censored] will be active, cause you use not one tcl script, and eggdrop sees them all, so be smart
and it is no need to write global ..., cause global command takes only variables and arrays to proc.