The existence of a superuser, in one form or another, is logically necessary. There has to be some credential that allows configuring credentials. That's root.
Root doesn't have to be a user account. It could be a capability, for example. Unix historically went for a simple design and used a single concept to implement both accounts and capabilities: users. Each person who uses the system gets a user account, and system services are also assigned a user account. The system service that, among other things, has control over user credentials (
/etc/passwd, and other functionality that plays the same role on modern systems), can indirectly obtain any capability. Under the Unix design, root can also directly obtain any capability (e.g. by running
su, or the underlying system call), but even if it was not so, it's difficult to prevent the credentials manager from assigning themselves any credentials¹.
Modern systems have evolved to a more fine-grained security model. For example, Unix early on added a notion of groups to allow users to share files, but groups can only be managed by root. Most modern Unix systems have access control lists that allows users to share files without root's intervention. More and more Linux system use security mechanisms such as SELinux that limit what even root can do.
But more complex security models are a double-edged sword. More fine-grained permissions allow for greater control, and they allow more security policies to be implemented in a simple way (for example ACL for access rather than indirect access through setuid programs). But more complex security policies are harder to review (there's so much more to review, in a more complex language), and the code to implement those policies is more complex hence has more risk of being buggy.
¹ This can be prevented by dual control or by cryptographic means, but that limits functionality (if there's no way to run arbitrary code with ultimate privileges) and availability (if the system is locked down too much, this increases the risk of getting locked out).