By default mutt ships with a config suited to most users without enabling too many confusing features. Unfortunately it's not suitable for using multiple openpgp sub-keys for signing messages.
In order to get my mutt do sign using a specific sub-key, I had to set the following in my .muttrc:
set pgp_ignore_subkeys=no set pgp_sign_command="/usr/bin/gpg --no-verbose --batch --quiet --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a!? %f"