The PAM module pam_mkhomedir uses Pluggable Authentication Module architecture for its operation. As such, there are some limitations associated with it. For instance:
Some servers may not authenticate users but they may expect user directories to exist. This means they do not use PAM, and in turn, pam_mkhomedir does not get a chance to create home directories. The notorious example is on email servers.
PAM is always an optional component for authentication. Some services may not use PAM at all and use a different method to authenticate users. In this case pam_mkhomedir is never going to be used.
Generally /home is owned by root and only root users can create home directories in it. Therefore the service that wishes to create home directories through PAM must be run as root, or else the home directory must have the same permissions as, for instance, /tmp.
Finally, Autodir is much wider in scope and supports many more interesting features.