What a change does is self documenting. Why it was made and why that specific approach was chosen could be due to many things, such as:
* business objectives,
* the result of experimentation,
* the result of an offline conversation
etc.
This cannot be captured in code alone. This is why we write commit messages.