I think when comparing grunt and gulp to webpack, that they solve different issues.
grunt gets complicated easily, by including a bunch of plugins and defining their configuration in a declarative manner. Gulp solves those issues by letting the user determine how to configure it himself, so the user can load in the package.json to load constants.
While webpack also does that, It imo has a more sensible definition.
Instead of the grunt/gulp approach, where you would say, do these actions with this folder, and this with that folder; webpack allows you to say, "if it's a jsx file: do this, and it's extension becomes: .js"
There's a lot less configuration needed for projects involving webpack, because it just lets you define transforms. Usually everything is turned into js (including images/css). But it also allows you to expose some files in the output to be loaded externally.
So there's no more 'gulp task' to run, now I'm just using npm scripts (npm start, npm run build, enz)