Why PPP have protocol field? Isn't whole purpose of partitioning communication system to have simple isolated subsystems?
PPP is an encapsulating protocol for transporting various network-layer protocols. The design of PPP puts it in both OSI layer-2 and layer-3. The OSI model is theoretical (what happens in the real world can be very different), and some protocols operate in multiple layers. Because of its design, PPP needs to know something about the network-layer protocol which it is transporting:
PPP also established a standard for assigning and managing IP addresses, asynchronous and bit-oriented synchronous encapsulation, network protocol multiplexing, link configuration, link quality testing, error detection, and option negotiation for added networking capabilities.
One of the three parts to PPP is the Network Control Protocol. PPP allows different NCPs to be used, depending on which network-layer protocol needs to be encapsulated and transported.
Cisco has a document which explains more about PPP: Point-to-Point Protocol