Thanks for sharing this, good to know somebody else has had this thought and I'm not alone.
Fundamentally they are the same. Looking at this hiera_resources the main difference is the way things are defined in the data sources. Whereas hiera_resources would have you group all the resource definitions into a single block, hiera_declare_types asks you to sprinkle them throughout the file, so for built-in types you would have
hiera_file:
# file definitions...
hiera_cron:
# cron definitions...
For user-space resource types like mysql databases, there's two steps, 1. define the user-space resource types to look for, 2. provide the definition e.g.
types:
- mysq::db
hiera_mysql_db:
# db definitions...
Six and a half dozen the other I suppose, but I'd argue the syntax of hiera_declare_types is more congruent with the way hiera_include('classes') works. What do you think?