Core architecture:
WordPress = WordPress Loop
Drupal = Content types, Node, Blocks, Views
Drupal takes a totally different approach to its core architecture than WordPress does. WordPress is based on a blog system, and as Wordpress developers, we basically pass queries using WordPress loop to output content. I often struggled with WP Query and WordPress loop to sort and filter output. I often had to tweak parameters, and code custom PHP to add more filters that couldn't be done with built-in filters.
Drupal started as a small news site builder, but has evolved into a powerful content management framework. Drupal has extensive flexibility when it comes to outputting content from the database. It has a WordPress-like post display function (a.k.a node), and widget-like block system, but you can add more without touching any PHP code or custom MySQL queries. When you need to output a chosen fields data from different content types (like user's name, event date, and post summary etc), you just need to use the Views module to bind those fields and place it as a block anywhere you want.
This is quite handy when it comes to adding more data driven content to a website. Need to output specific data? No need to write a query, all you need is Views. Need to add an image field to block and put it under the content area? You just need to install the Bean module and create a custom block type and create a block placed under the content area.
A lot more work would be required for developers to do the same thing on WordPress unless there was already a plugin that does what you want it to.
As an example, I had some difficulty in handling WordPress loop on a project that was using a third-party event plugin. The loop with some filters went through from the beginning to the end of posts, and the latest six events were supposed to display on the front page. However, the frequency of events vary week by week, and that affected the number of event posts that were displayed. The filter that met my needs had to be hand coded
You can solve the same problem more easily with Drupal by setting up an event content type and making a View block with sorting and filters. The number of event posts displayed on the front page are not dependent on the event's frequency.
I don't blame WordPress for making things difficult. It's an excellent platform, and a really good CMS for personal website or businesses with simple functional requirement or functionality that can be accommodated by third-party plugins out of the box. It just needs more work to convert it into a rich web application, and Drupal with it's flexibility makes it easier to develop more robust features without using custom code.
Modules on Drupal are more heavily weighted than plugins on WordPress
You may have downloaded plugins to make your WordPress site fancier. Perhaps the Related posts plugin, an SEO plugin, a security plugin, or an image cropping plugin and so on. They are basically used to add more functionality, and in some cases, users need developer's hands to add more complicated features. To use WordPress as a simple blog site, users can immediately start to write a blog post after its installation.
Drupal also comes with a basic feature set out of the box, you are still able to write a blog post like WordPress using Article content type with Drupal's default state.
On Drupal Overview page, they explain, "Drupal isn't a prefabricated toy truck, but rather a collection of wheels, windshields, axles, frames, etc., that a toy maker can easily connect together."