I would say it is a make bug in that POSIX make has no good way to get PWD. Not necessarily a bug even, but an annoyance.
It can.... get it from the environment.... like every application run by every operating system does. PWD is only ever set by a shell. It exports it as an environment variable. Programs can read environment variables passed to them.
A good solution to the problem is for make to set the PWD macro. BSD make already does this.
> It can get if from the environment like every application does
Well no, applications either read an environment variable or use getcwd(2).