The motivation for this is to make it easier to see whether a travis failure is due to linting, unit tests or integration test failures, without having to look in the logs.
It also means that each job is independent, so if e.g. the linting fails then the unit tests will still be run.