The motivation for this is not obvious.

Much of what you can do in a function returning a table can also be done by a query (or view).