The famous performance issue is that on Linux (and to a lesser extent elsewhere), a lot of information in /proc consists of binary numbers that are reported in text form. This requires the kernel to format all of these numbers to text and then consumers of /proc information will generally parse them back into binary. All of this consumes CPU time, especially if programs are reading /proc frequently (as they may be for performance metrics or other information). Text is convenient for easy consumption at one level but not necessarily optimal, which is why a lot of alternate interfaces transfer things in binary form."Everything is a file" is great from a human perspective when you're writing shell scripts.
A syscall with a buffer to store a list of entries is far more performant when you're writing library functions in a compiled language.
I don't see this as moving away from anything, just picking the right method for the task/environment.