islandTable is a variable that stores the value of islandDataTable[proximity.Parent.Parent.Name]. It does not store the memory location of islandDataTable[proximity.Parent.Parent.Name]. This means any changes to the variable do not affect the table. To change a value in the table you have to use the first piece of code you provided
this is because setting a variable to an already existing table doesn’t make it a different table like a number or a string would instead it’s only a reference to that table.
For example
local a = {}
local b = a
print(a, b) --> table: 0xcc4362a8c75f31df {} table: 0xcc4362a8c75f31df {}
both print the exact same memory addres because they both refer to the same table.
To fix your issue you can use table.clone to make a copy of your default table.
note that table.clone is only a shallow copy so it won’t copy a nested table.
If your default table has nested tables (a table in the table) then you would want to deepCopy your table.
You can find more info here