I feel the opposite. Everything I've used in GCP, I've understood and appreciated the design decisions behind. Most things I've used in AWS, I've wondered why they shipped it that way. Examples:
* High-availability HSM KMS: trivial in GCP, super difficult in AWS.
* Object storage (GCS/S3): multi-region is trivial in GCP, somewhat harder in AWS. Archival is so much simpler in GCS than S3 Glacier.
* IAM: makes sense to me in GCP and is consistent across products, AWS policy editor has poor usability and feels inconsistent between products.
* Having per-region pages in the AWS console is a pain, easy to lose stuff. GCP is one global interface.
* Cloud functions/Lambda: CF Just Work with native dependencies. Lambda is painful in that regard.
GCP's auth lib is confusing though, I agree with you there. We stopped using it and all of their client libs a few years ago and wrote our own. However, that they force you to use service accounts is an excellent security decision.