The construction script should really only be used for, well construction time, it’s fired in the editor/gameplay every single time the actor is constructed, not spawned or created, which is fine for characters that’d need a pre-determined (by the developer) loadout in a single player scenario, but (although out of scope in this course) in multiplayer, the construction script could/will lead to unintended side effects with networking/replication, essentially, the best use of the construction script is to setup/modify existing components and/or variables, not add new ones.
With that in mind, I think the way the course demonstrates from the BeginPlay event at runtime after the character has been spawned, etc, teaches a more reusable and adaptable approach to handling gameplay logic such as picking up/spawning and attaching weapons mid-gameplay.
Despite this course being targeted at being better suited to total beginners, I think a far better way to demonstrate this overall would have been going more into class inheritance and using an Actor blueprint style approach for weapons to teach the basics and power of pre-definining any template logic in a parent blueprint and overriding it in the children (BaseWeapon, M4, etc, etc), which are a perfect use-case for per-weapon hand offsets/sockets and the many other factors that change from weapon to weapon.
I realize this was a lengthy response but as someone who has been developing in Unreal for several years now (thanks to the “Unreal bread and butter” I learnt in the original course by Ben and Sam), I felt like sharing some insight and experience regarding things I wish I’d also learnt way sooner.