GitHub and GitLab are neck-and-neck and both pushing each other to innovate.
Here are some recently-announced GitHub features that GitLab had first:
* Rebase-and-merge button
* protected branches
* Trello-like view for issues
* Changing the base branch of a merge/pull request
Some features that GitLab has that GitHub does not:
* Geographically local caching instances for their on-premise product
* Prefixing a merge request name with WIP prevents merging
* Milestones at the group level
* A "Merge when CI Succeeds" button
* Built-in CI that is better-designed than Travis
Where GitLab will really be transformative is their long term vision to become a platform for the entire software development lifecycle. Their endgame is to be a platform where you can spin up a development environment and code in your browser via Koding integration, have your changes built and tested in GitLab CI, and then deployed via Kubernetes integration, with the environment for every stage of the pipeline customizable via a dockerfile in the repo. Whether or not you disagree with their vision, they have loftier goals than GitHub does.