What you suspected is correct.
Since the minimum pool size is set to 2, those two idle connections are never closed, which is why the maxConnectionReuseTime setting does not affect them even after the timeout.
If you want this behavior to change, you can migrate to Oracle JDBC/UCP 23ai, which provides an option to allow timers to affect all connections.You can enable this by setting the following system property:
-Doracle.ucp.timersAffectAllConnections=true
This ensures that even idle connections below the minimum pool size are eligible for closure based on timer settings.