What made you decide to separate the Grid System Visual into another script ? My initial thought was to put it in GridSystem.cs script similar to CreateDebugObject() since there is already a loop being done in the constructor.
Is it because GridSystem is mainly just to create the structure and you are separating the visuals logic from this script ? And the CreateDebugObjects is just a helper tool for this script and it could easily be just in another script if i wanted it to.