Git is a distributed version control system. As such, there is no single central repository, like with Subversion or even CVS. So if there was a single command to commit and push, then where would that commit would go? What would be the remote repository?
In Git, there is no central repository. There is not even any hierarchy in repositories. For a local repository, any other repository is a remote repository it can interact with. And the local repository is just a possible remote repository for any other repository.
So local and remote are just points of view relative to your current location: The local repository is always the current repository, and every other repository is a remote that you can interact with.
When working with Git, your local repository is what you interact with: You commit all your changes locally. This has many benefits and use cases that I won’t go into detail here, but essentially it is what makes version control distributed, as the local repository has all the information, the full history.
So when you have that local repository, which has the full history and all the changes, you need a way to interact with other repositories, in order to allow you to share the history. The two ways to do that are push and pull (or fetch). Since with distributed repositories, every repository is the same, every repository can push or pull from another (assuming they have access).
In the end, committing and pushing is required to be separate steps because one is interacting with the (local) repository while the other is a deliberate step to share changes with a remote repository.