Freeing up the *data* makes that space available for new data *in that LOB* to use it. It does not free up the space for anything else (other tables etc) to use it.
To do that, you need to MOVE the lob data so that the database will rewrite the (non-empty) blocks and free up the empty blocks back to the tablespace.
alter table t move lob ( c ) store as securefile;
should free up that space, eg
SQL> create table t ( x int, c clob);
Table created.
SQL> insert into t
2 select rownum, rpad('x',32000,'x')
3 from dual
4 connect by level <= 1000;
1000 rows created.
SQL>
SQL> select * from user_lobs
2 where table_name = 'T'
3 @pr
==============================
TABLE_NAME : T
COLUMN_NAME : C
SEGMENT_NAME : SYS_LOB0000285969C00002$$
TABLESPACE_NAME : USERS
INDEX_NAME : SYS_IL0000285969C00002$$
CHUNK : 8192
PCTVERSION :
RETENTION :
FREEPOOLS :
CACHE : NO
LOGGING : YES
ENCRYPT : NO
COMPRESSION : NO
DEDUPLICATION : NO
IN_ROW : YES
FORMAT : ENDIAN NEUTRAL
PARTITIONED : NO
SECUREFILE : YES
SEGMENT_CREATED : YES
RETENTION_TYPE : DEFAULT
RETENTION_VALUE :
VALUE_BASED : NO
MAX_INLINE : 4000
PL/SQL procedure successfully completed.
SQL>
SQL> select bytes
2 from user_segments
3 where segment_name in ('T','SYS_LOB0000285969C00002$$','SYS_IL0000285969C00002$$');
BYTES
----------
65536
75825152
131072
SQL> delete from t;
1000 rows deleted.
SQL> commit;
Commit complete.
SQL> select bytes
2 from user_segments
3 where segment_name in ('T','SYS_LOB0000285969C00002$$','SYS_IL0000285969C00002$$');
BYTES
----------
65536
75825152
131072
SQL> alter table t move lob ( c ) store as securefile;
Table altered.
SQL> select bytes
2 from user_segments
3 where segment_name in ('T','SYS_LOB0000285969C00002$$','SYS_IL0000285969C00002$$');
BYTES
----------
65536
262144
65536