Hello vanram,
we can't just add all information everywhere. A Job and a Task provide multiple layers of information. Information that is related to the specific object is stored in that specific object. We want to keep objects as clean as possible, both to make debugging and reading easier but also to save space.
For example, at Job level we only want to tell if it failed or not. If a specific Task failed and have some specific output it may not be related to the Job failure. In this case the Task output will be confusing. If we have several Tasks, then which Task output should we store?
Also, bare in mind that some users have output of several MB. Copying this information between objects is a waste of space.
There is also a huge difference, between each user, what information they want and where.
For the above reasons, we have provided tools like Variables so you can create your own specific Notifications. Also, Notifications are global so if you have found a format you like you can re-use the information.