The above answers are are good. I've commonly had to add custom features to account creation, but I usually build it as a wrapper around useradd/adduser. Mainly customizations center around site-specific elements, such as unique mail handling/configuration, quotas, sudo capabilities, and group management.