Is it good practice to have the Start() function also be an initialization function that can be called at any time by the script?
No, since it should be callled only when the Monobehaviour is enabled, you should create in Init() function or something like that if you want to reset the object’s properties.