That's called a memory leak - the app requests some amount of RAM to use for something, but the request is in a loop, and the "developer" releases the RAM
after the loop ends, so the app is constantly asking for
more RAM (which
should eventually cause that one app to crash, but the RAM is never released (which is why rebooting fixes it).
And considering what "develops" apps these days, I can definitely believe that memory leaks are a problem - they have been at least since Microsoft released its first C compiler - back in the 80s? BASIC interpreters didn't normally run anything that explicitly allocated RAM (but boy, could you
do things if you knew how to), and assembly programmers knew to not keep allocating the same RAM
amoumt (but additional RAM, not the same RAM) over and over.
But aside from memory leaks, using 95% of RAM in Android, then running an app that needs 20% of it, isn't a problem. One or more apps get killed while that new app runs, then they're loaded back as soon as the user "uses" the app again.
Dianne Hackborn, an Android developer (not someone who develops apps, someone who develops Android) wrote an article about it in 2010 -
Multitasking the Android Way. (Careful, when she says "memory" she's not referring to storage.)