Multiple forms on the same page: hook_forms only works after cache_clear_all
I had the same problem and it seemed to be resolved after correcting an issue with the function definition. Make sure that $form_state is a reference.

function mymodule_a_form($form_id, &amp;$form_state, $args) {
...
}


One of the other things that I noticed is that the cached module_implements no longer had a reference to my module, so when Drupal was looping through the implements and looking for a function called mymodule_forms(), it couldn't find it.  You can check to see if this is the issue by comparing the cached implements to the static version.

    $cache_implements = cache_get('module_implements', 'cache_bootstrap')-&gt;data['forms'];
    ksort($cache_implements);
    dpm($cache_implements, 'CACHED FORM IMPLEMENTS');

    $static_implements = drupal_static('module_implements');
    ksort($static_implements);
    dpm($static_implements['forms'], 'STATIC FORM IMPLEMENTS');


If that is the issue and your form declaration is correct then maybe try doing an include on the page that references your dynamic forms.

module_load_include('admin', 'mymodule', 'inc');