What's the difference between this PROJ_DATA_SUBDIR and DATADIR when cmake is configuring the proj library?

Depends on where they come from. The unadorned ones probably come from an embedded third-party library or some other generic code. I would ask proj if they could resolve the confusion by eliminating some variables from appearing in the cache at all.