It looks like GnuPG will try to use the most recently-created signing-capable
subkey when making a signature, even if that subkey is not present (e.g. if it
is on a smartcard which is not present).
If a different signing-capable subkey *is* present (on disk or in a smartcard),
gnupg should use the available subkey, rather than throwing an error.
If none of the signing-capable subkeys is available, but the primary key is
available and marked as signing-capable, I also think gnupg should fall back to
signing with the primary key.
This was raised on gnupg-users here: