Although there my be 30% free space, you don't say how it is fragmented.

For example - say you have 30Mb consisting of 25 1Mb chunks (not contiguous) and 1 5Mb chunk. If say you have a table which needs a next extent of 10Mb it will not be able to allocate it in this file so will choose another.

Try running:
col Total format 9,999.99
col Max format 9,999.99
col Min format 9,999.99
col tablespace_name format a15
select tablespace_name, sum(bytes)/1024/1024 "Total", max(bytes)/1024/1024 "Max",
min(bytes)/1024/1024 "Min", count(*) "Count"
from dba_free_space
group by tablespace_name
/

Instead of continually adding 100Mb files, would it not be better to add bigger files less frequently?

If you're not expecting it to grow, have you made sure that you don't have anyone's temporary tablespace allocated to this tablespace?

select username, temporary_tablespace from dba_users
where tempoary_tablespace <> 'NAME OF YOUR TEMP SPACE'
/

Are you only adding this space when you receive errors? If so which error?

Basically, Oracle will go back and use that space at some point if it can, so it would be bad to wait until it's at 99% before adding a file, since you run the risk of your application failing due to space.

Terry