If you are saying that the server allocates RAM to store PHP session data between requests, you are mistaken. Session variables are stored in files, not in memory space belonging to the HTTP process. (The operating system may buffer the files in RAM, but that's an external issue.)
In fact, you can kill and restart a Web server without deleting active sessions.
Files are used because there is no guarantee that the same server process will serve the next request, particularly with Apache 1.x, which is a preforking server and not a threaded server.
On a Web cluster, is even possible for multiple server boxes to be involved, and so long as they share a session storage system (such as an NFS-mounted directory, or a database, if you write the necessary code).
Session data is inherently more secure than cookie, post, and get methods because it does not retransmit the variables in plaintext over the Internet. The session ID is visibly transmitted, but the data itself remains hidden server-side, available only to the server.
It's possible to hijack a session ID and therefore a session, so if you need bulletproof security, you should still be running on an encrypted connection (https server).
The other thing you said is that client-side storage does not place a load on the server. This is not true, because the client retransmits the entire cookied data set along with every request. This slows down the transaction, requires that the Web server keep the connection open for a longer period, and has a much more deleterious effect on overall performance than server-side storage.
If you run a packet sniffer on an ethernet segment attached to a Web server, and monitor Port 80 traffic, you can see all of this happening, by the way.