I have no idea what is going on here, maybe a new year suprise for me

I am happy it does work for you;
-- Enterprise Edition Release 10.2.0.2.0 and DBA role granted and platform_name Solaris[tm] OE (64-bit)
SET SERVEROUTPUT ON
BEGIN
dbms_output.put_line('VERSION ' || dbms_db_version.version);
dbms_output.put_line('RELEASE ' || dbms_db_version.release);
END;
/
BEGIN
dbms_monitor.session_trace_enable(session_id => 98,
serial_num => 21659,
waits => TRUE,
binds => FALSE);
END;
/
SELECT sid, serial#, sql_trace, sql_trace_waits, sql_trace_binds
FROM v$session
WHERE sid = 98 and SERIAL# = 21659 ;
SELECT * FROM dba_enabled_traces ;
Output :
VERSION 10
RELEASE 2
PL/SQL procedure successfully completed
PL/SQL procedure successfully completed
SID SERIAL# SQL_TRACE SQL_TRACE_WAITS SQL_TRACE_BINDS
----------
---------------
98 21659 DISABLED FALSE FALSE
TRACE_TYPE PRIMARY_ID QUALIFIER_ID1 QUALIFIER_ID2 WAITS BINDS INSTANCE_NAME
----------------------------------------------------------------
--------------------------------
-----
Also tried on my laptop at XE like you did;
-- Express Edition Release 10.2.0.1.0 and DBA role granted and platform_name Microsoft Windows IA (32-bit)
SET SERVEROUTPUT ON
BEGIN
dbms_output.put_line('VERSION ' || dbms_db_version.version);
dbms_output.put_line('RELEASE ' || dbms_db_version.release);
END;
/
BEGIN
dbms_monitor.session_trace_enable(session_id => 38,
serial_num => 3,
waits => TRUE,
binds => FALSE);
END;
/
SELECT sid, serial#, sql_trace, sql_trace_waits, sql_trace_binds
FROM v$session
WHERE sid = 38 and SERIAL# = 3 ;
SELECT * FROM dba_enabled_traces ;
Output :
VERSION 10
RELEASE 2
PL/SQL procedure successfully completed
PL/SQL procedure successfully completed
SID SERIAL# SQL_TRACE SQL_TRACE_WAITS SQL_TRACE_BINDS
----------
---------------
38 3 DISABLED FALSE FALSE
TRACE_TYPE PRIMARY_ID QUALIFIER_ID1 QUALIFIER_ID2 WAITS BINDS INSTANCE_NAME
----------------------------------------------------------------
--------------------------------
-----
Best regards, and a happy new year sir.
Tonguç