You basically want git to do all operations recursively and automatically for all submodules. Which is probably trivial in a centralized client-server model like svn.
But git is distributed. Your submodule may come from a totally different URL, with a totally different protocol. Most probably you don't event have push
access to the submodule's origin
repo, while you do for the main repo.
So there cannot be a recursive push.
Therefore the designers probably decided to avoid automatic recursion for submodules everywhere. Which is consistent, but a huge amount of pain.
So much so, that in a certain project we completely abandoned them and used subtree merges instead.