The two answers about git correctly agree with you that tags are good for releases, and branches are good for new features, but don't really explain why.
The git tag constantly points to this commit. This means that it is really only useful for marking a stage, such as a release.
On the other hand, a branch can be checked and committed, which means that the branch will advance to indicate a new commit. This makes branches a way to work in git; anytime you commit, you want the corresponding branch to be checked so that it captures your progress. This includes new features, as you say, but also any other work.
The situation in Mercurial is basically similar, although branching is not so easy, so you will not branch out as often as in git. And tags are handled a little differently, but are still good for marking releases.
source share