In all the init.d configurations (and probably systemd too) the zkserver_bin is being called with start/stop/status/restart but is the Zookeeper config is not being passed in as argument $2. From zkServer.sh.
if [ "x$2" != "x" ]
then
ZOOCFG="$ZOOCFGDIR/$2"
fi
# if we give a more complicated path to the config, don't screw around in $ZOOCFGDIR
if [ "x$(dirname $ZOOCFG)" != "x$ZOOCFGDIR" ]
then
ZOOCFG="$2"
fi
However, in the above, $2 does not get set. So the defaults from zkEnv.sh is being used.