Long story short : Today in 2020 AEM is available as SaaS offering. To transform AEM from a monolithic Java application to something that runs inside orchestration containers required a series of repository restructurings that started in AEM 6.4 and furthered in 6.5. Within this containered-AEM-world there is a concept of immutable and mutable nodes. Eg /etc is considered immutable, thus required forcing customers to migrate their stuff out of these paths to /apps (mutable).
This is to locate the client libraries near the other scripts, which are generally found below /appsand /libs
In order to better isolate code from content and configuration, it is recommended to locate client libraries under/apps and expose them via/etc.clientlibs by leveraging theallowProxy property
Before when we used to declare clientlibs in /etc. We had to allow /etc paths access to end user as well as if we wanted to keep js/css under the component. we had to either embed our original clientlibs in site clientlibs in /etc or directly define js/css in /etc clientlibs. This proxy clientlibs does not require this two way step process. we can now easily keep component specific js/css files near component and make it available to end users using allowProxy property.