ls and grep are in /bin on my system. wc, coming from coreutils is in /usr/bin. But that's really only a small part of /usr/bin.
$ dpkg -L coreutils | grep -c /usr/bin 76
Are you suggesting that all of e.g. GNOME should be a single program?
Why hard links over symlinks?
You could go the way of busybox or uutils and have a single binary with many hard links. So 'ls', 'wc', 'grep', etc can all point at a single executable which dispatches to different functionality based on argv[0].
Then you can even share code between the binaries, which should make them even smaller.