why #submit not apply in form
This is probably what's happening...


node_add() calls drupal_get_form() internally, which finalises the form and commits submit/validate handler data to the cache.
You're modifying the data in the form array after it's been saved to cache.
When the form submits, the page reloads and the API grabs the cached submit handlers from the store. As your submit function was never saved alongside that data, the API doesn't know about it.


You should use hook_form_alter() as already noted by Jimmajamma in the comments, then you won't have this problem at all.