I always use StarterGui.
The main containers that should be used for different scripts are:
ServerScriptService
ReplicatedStorage
StarterPlayer > StarterCharacter | StarterPlayerScripts
In the case of Local Scripts I usually store them in StarterCharacter / StarterPlayerScripts
When we go more specific, let's say we are going to make our game Filtering Enabled I start using:
ServerScriptService :
Server-sided & Can only be seen by the server.ReplicatedStorage :
Client-sided & Server-sided, can be seen by both and replicates to both.Take care that most of the people have obnoxious way of placing their scripts / remotes, this is just my way of doing things.
When we are talking about GUI-wise work, I usually store the scripts on StarterGui most of the times, so they get replicated along the GUI I make.