smbadduser tries to create files in /etc/smbusers and /etc/smbpasswd instead of /etc/samba/smbusers and /etc/samba/smbpasswd, so it fails when changing the password.
This script is unfortunate -- it does not use the correct format for a samba 2.x password file. It's using the old format. The functionality of this script is contained by smbpasswd -a user (adds user to passwd file and sets password).
So, in other words, it just needs axed.
Not quite. We can get rid of the check for the existence of a user entry in the smbpasswd file and of the awk script which tries to add the user to the smbpasswd file, but we still need to add the user to the smbusers file. Just done it(tm).