Even ignoring everything else, at a minimum it is backwards.
There is no reason to tell the application, and by extension their developers, how old the user is. The application should tell the user what bracket it is appropriate for and then the operating system could filter appropriately without any of the user’s identifying information leaving their system.
This is also technically superior because it moves the logic for filtering out of being custom implemented by each and every single application to a central common user-controlled location; you do not have to rely on every application developer doing it right simultaneously.
It's a lot easier to add an API that's opt-in for an application that needs it. What's the appropriate way an OS should handle an application that doesn't declare this new property? Fail open? Fail closed? It would quickly turn into a mess. IMO it's better to do it this way because the applications that need it (browsers, chat clients, etc.) will use it to provide legal shielding. This isn't a technical problem they're trying to solve, it's a legal liability one. I generally like this approach, but I think there's no reason to mandate that an application use the API, just mandate that if they do they are considered to have real knowledge of the age range of the user in question. If you provide the API, the incentive to use it is already there for the applications it's needed for the most.