The reason for limiting to scripts within the project is that projects are git versioned, meaning that the whole project and all pipeline definitions and code are versioned.
So when someone wants to work on the same project they only have to clone/import your project and they are guaranteed that they have all source code necessary to run your project.
Furthermore when you schedule an experiment (soon to be renamed to jobs) it creates a snapshot of your project (and thus all code) to make sure when you continue editing your project while it’s running, that the code being used for the experiment doesn’t change.