If you're looking for a task runner, not a build tool, then make is not "far superior" in any sense and there are much better alternatives, the most prominent probably being "just". Even something as basic as accepting parameters to a task (make fetch <arg1> <arg2>) is awkward because make doesn't understand this syntax and interprets the arguments as targets. The only way to make it work is either through named arguments or empty target hacks and in both cases you need to write the validation logic yourself. In just it's simply:
fetch PACKAGE VER:
@echo fetching {{PACKAGE}} at version {{VER}}
$ just fetch foo
error: Recipe `fetch` got 1 argument but takes 2
usage:
just fetch PACKAGE VER
$ just fetch foo 1.2.3
fetching foo at version 1.2.3
https://just.systems/man/en/chapter_1.html