This inconsistency highlights an important design decision in JEP 512. The IO class was specifically created to smooth the learning curve for beginners - part of Oracle's "Paving the On-Ramp" effort to make Java more accessible to new programmers and scripters.
The behavior difference you've identified between IO.println(char[]) and System.out.println(char[]) is likely intentional. The IO class prioritizes simplicity and predictability over the specialized behaviors that PrintStream has accumulated over decades. For beginners writing their first programs, having println always call toString() creates more consistent mental models.
However, this does raise compatibility concerns. During the Amber mailing list discussions mentioned in my briefing, Oracle emphasized that the path from compact source files to full programs should be smooth. A student who starts with IO.println(msg) and later switches to System.out.println(msg) shouldn't encounter surprising behavior changes.
This might be worth raising on the amber-dev mailing list. The Java team has been very responsive to feedback about these onboarding features - they actually removed implicit IO imports based on community input to ensure a smoother upgrade path.
The goal is to let students start simple and grow gracefully without having to rewrite their existing code. Behavioral differences between IO and PrintStream could create exactly the kind of friction JEP 512 aims to eliminate.