Git was designed to support certain kind of workflow during Linux kernel development. By certain kind of people for certain kind of people.
It is not designed to be easy to use by ordinary developer (compare with hg
!) but gain large popularity and cultural status due to its cost, performance, large company support and advertising campaign (GitHub here).
Today ordinary developer interact with Git via IDE GUI and don't need to know about Index/Stage area. It just uses checkboxes like in asker screen-shot (so there are no difference between Git/Mercurial usage for ordinary developer).
For people working with command line irregular CLI syntax of Git and exposing unnecessary storage format details make learning line longer in compare to time to become Mercurial wizard.
Here is nice images that describe Index usage:
You alway may emulate Index by (but why?):
hg qinit
hg qadd
hg qrefesh
hg qfinish
except MQ allow you to have an ordered set of Indexes, not just one! And allow you give name to each "Index".
With record
extension you have option to select patch chunks in CLI like you check checkboxes in GUI. That extension is direct answer to Git -p
option.
So topic starter is actually right in its filling that Index is unnecessary feature of DVCS architecture, and built into Git to support willing of some Git core developers.
Good luck and happy hacking!
UPDATE Quotation from http://stevebennett.me/2012/02/24/10-things-i-hate-about-git/
Most of the power of Git is aimed squarely at maintainers of codebases:
people who have to merge contributions from a wide number of different
sources, or who have to ensure a number of parallel development efforts
result in a single, coherent, stable release. This is good. But the
majority of Git users are not in this situation: they simply write code,
often on a single branch for months at a time. Git is a 4 handle, dual
boiler espresso machine – when all they need is instant.