Hello David
Indeed, intuitively, the spokes’ overlay IP addresses (aka tunnel interface addresses) should enter the routing table as directly connected since they’re on the same subnet, right? Not as OSPF-learned addresses. Well, this is due to the nature of point-to-multipoint network type.
When OSPF runs on a point-to-multipoint network, each router (including the hub) advertises its own tunnel interface IP address as a /32 route to other routers, even though the tunnel interfaces are configured on /24 subnets. Thus, the hub learns about the tunnel IP of each spoke as a /32 from OSPF, not as a directly connected route.
Now from OSPF’s point of view, those /32 addresses are no longer in the same subnet, therefore they are no longer considered directly connected, thus they must be learned via OSPF.
I think this also answers your second question concerning the /32 in the routing table on these particular routes.
I hope this has been helpful!
Laz