Rather, it's the level of effort required to standardize, carry over, or reproduce a particular feature in the disparate environments we use.
Say Windows maintained that filesystem transactional feature. It'd be exposed in their C++ (?) API. What if you wanted to write your program in Python? What if you wanted to port it to Mac? Linux?
It just takes time for such platform features to percolate to the various environments that could use them.
I do not see how it follows. A smart developer will choose a database, not a file system, if data integrity is important. So it can be simply the case that the transactional API with a lot of its limitations were simply not flexible enough for people to bother.