File creation dates of archived WAL files not in line with archive_timeout in PostgreSQL 9.6
The documentation has an answer to this:


  When this parameter is greater than zero, the server will switch to a new segment file whenever this many seconds have elapsed since the last segment file switch, and there has been any database activity, including a single checkpoint (checkpoints are skipped if there is no database activity).


Based on your observation and the above quote, I guess you have a checkpoint every 20 seconds or so, and a very low rate of changes.