I want to remove all user-created variables at the start of a script.
Currently I am doing Remove-Variable -Name * but it tries to dele
You should not rely on those variables. Anything that was not declared is just not used. If you need to pass things around, use parameters.
If you keep up to this principle, you would just overwrite your user-created variable and use it like it never existed.
This is enterprise best practices that let you infinitely scale your scripts. Not just in Powershell, but in any language which could have global variables, such as Javascript.