I use both extensively and lean towards to opposite statement, though not as strongly.
GitHub Actions feels much more well thought out to me. The templating feels less hacky and the workflows via "uses" work really nicely for abstracting common bits of CI config into "packages". The downside is that GitLab CI feels easier to pick up and explain.
On the opposite side, GitLab CI feels like it was made for containers and k8s whereas GitHub Actions feels like it's just a VM (even if the runner software is technically more flexible than that). From a management perspective GitLab is nicer but as a user I often want to avoid thinking about any of the k8s quirks and just have an emphemerial VM to play with.
GitHub Actions feels much more well thought out to me. The templating feels less hacky and the workflows via "uses" work really nicely for abstracting common bits of CI config into "packages". The downside is that GitLab CI feels easier to pick up and explain.
On the opposite side, GitLab CI feels like it was made for containers and k8s whereas GitHub Actions feels like it's just a VM (even if the runner software is technically more flexible than that). From a management perspective GitLab is nicer but as a user I often want to avoid thinking about any of the k8s quirks and just have an emphemerial VM to play with.