It really does depend on what the job is doing, for example, most of our build pipelines are a mixture, but most all boil down to a shell script of some kind, could be python too.
For self-serve jobs, we opt to always use a script, simply because if jenkins is ever down, you can/have the ability to run the script locally.