LocalScript setting its parent to PlayerScripts has its children removed

Here is a script:

 --MADE BY NWSPACEK

local LocalScript = script["LocalScript"]

--this part manages the local script
local addMyLocalScript = function(player)
	local localScript = LocalScript:Clone()
	local backpack = player:WaitForChild("Backpack")
	localScript.Parent = backpack
end
-- Loop through all players when model added
for _, player in pairs(game.Players:GetPlayers()) do
	addMyLocalScript(player)
end

-- Add script when player is added
game.Players.PlayerAdded:connect(addMyLocalScript)

It’s a modified boilerplate script I use in free models to hand LocalScripts to players.

Here is the LocalScript located inside this script:

wait(1) --you can remove this if you want it has no effect
script.Parent = game.Players.LocalPlayer.PlayerScripts

Inside the localScript is any kind of object. RemoteEvents, Folders, ScreenGuis, *Value objects, it really doesn’t matter. The LocalScript gets transfered into the Backpack with all its children, the LocalScript is capable of inserting itself into the PlayerGui without losing its children, but whenever it tries to move itself to PlayerScripts, all the children mysteriously vanish.

Expected behavior: children are preserved when changing the Parent to PlayerScripts.
Observed behavior: all children are lost when changing the Parent to PlayerScripts.