Why PostgreSQL remove or add WAL files?
Postgres temporarily adds WAL segments beyond max_wal_size to absorb peak transaction loads without forcing a checkpoint -- unlike Oracle.

It removes unneeded WAL seqments to avoid using up the log file system unnecessarily.

There's always a trade-off between performance and resource (in this case log disk space) utilization, and different DBMSes use different approaches to addressing this issue.  In this case PostgreSQL lets you find the balance that works best for you by allowing you to play with the values of wal_keep_segments, max_wal_size and min_wal_size.