Workflows are typically I/O bound (where I/O == tasks that are executed). In most cases they tend to include little or no actual computation. So the raw computation speed is of little consequence, and an interpreted approach is fine.
Implementations of workflow languages optimised for compute performance (e.g. using JIT compilation) do exist, but are not widely used outside of situations where the workflow combines both compute-intensive work and coordination of external tasks.
https://gitlab.com/gitlab-org/gitlab-ce/issues/21485