If a message is printed in the echo area then it can be hidden in two
ways: either the user uses some command and the echo area is cleared
automatically or an other message comes which replaces the previous
one.

I use several timers which perform recurring or background tasks,
e.g. fetching things from the network. When there is an error in such
a timer then often I only know about it by noticing that the task does
not produce the usual results, e.g. fails to update something, because
other progress messages hide the printed errors.

A better way can be if error messages can't be hidden if the user is
idle. When I'm using emacs then I usually notice the error, but if I'm
in an other app and the error occurs in the meantime then often it's
hidden by a progress message by the time I switch back to emacs.

So when the user is not idle then things should work as today. But if
the user is idle (e.g. uses an other app or is away from the computer)
then error messages should not be hidden by other messages, rather
they should all be shown in a multiline echo area, so when the user
gets back to emacs he can see all the errors which happened while he
was away.