what is the difference between #!/bin/sh and #!/bin/ash

the question is because of wl700gE uses #!/bin/ash and if I try to run a script:

# cat /shares/MYVOLUME1/MYSHARE1/test.sh
#!/bin/ash
mkdir /tmp/root
I get error:

# /shares/MYVOLUME1/MYSHARE1/ipkg.sh
/bin/ash: error while loading shared libraries: /bin/ash: symbol vprintf, version GLIBC_2.0 not defined in file libc.so.6 with link time reference

If I run :

# cat /shares/MYVOLUME1/MYSHARE1/test.sh
#!/bin/sh
mkdir /tmp/root
I get:

# /shares/MYVOLUME1/MYSHARE1/test.sh
: cannot open
also I'm curious why does it work at all, if /tmp/passwd has /bin/sh:
# cat /etc/passwd
root::0:0:root:/:/bin/sh
guest::35000:42000:guest:/:/bin/sh
but wl700gE uses /bin/ash?