useradd has the -p option, that lets you specify a password to be assigned to a new user instead of having to do this as an extra step. Although I think this is bad practice in general, putting plaintext passwords on the command line, it doesn't work in a big way. i.e. useradd bob -p bobspassword this puts "bobspassword" in /etc/shadow instead of calling crypt, or some other encryption function.
This is the correct behaviour for the -p option to useradd. You must encrypt the passwd yourself. From the useradd man page: -p passwd The encrypted password, as returned by crypt(3). The default is to disable the account.