Fixing this issue is basically 90% of my day job, I'll try to summarize the issue:
- The way wordpress theme "templating" (i.e., raw PHP) works it makes very difficult to get a complete overview of the layout issues arising from a full layout even without taking into consideration plugins and extras;
- jquery is the defacto JS framework of wordpress. Until a few weeks ago, it was included without minification. there are also a bunch of compatibility shims that are shipped with wordpress and it's somewhat common for a plugin to enable and include them even if they're not needed.
- You have basically no guarantees on which javascript libraries versions are available at runtime, so plugins tend to include every dependency you need. there's a somewhat primitive redundacy check for common libraries like jquery, but it's very inconsistent.
- It's very common for a stock wordpress theme to use the Bootstrap framework. It's usually the whole package + extras, going for roughly 300kb compressed.
- Wordpress makes heavy usage of url rewriting and aliasing internally for image and url resolution. One wrong setting in nginx or apache and any GET request could stall your web server for half a second or more.
- DB Access is extremely slow due to some architectural choices. If your website is relatively static a decent caching plugin can help but it becomes useless if your content changes very frequently.
- Due to the way classic themes work it's basically impossible in a normal setup to generate a critical CSS path for frequently accessed or above-the-fold resources. The new "Block Themes" philosophy should somewhat fix the issue once they're more commonly available.
- I know I'm sorta generalizing but... the general attitude around the WP developer scene outside the core devs is to prefer the "quick and dirty solutions" over something more organized, so there's very little, if any, attention to performance details. There's quite a lot of inertia into using relatively modern (anything past 2010, really) development paradigms and philosophies. The stereotypical WP dev I've met has learned the basics of PHP in 2006, decided it was good enough, and never really improved from that.