Você precisa reiniciar o servidor depois que os logs forem rotacionados, pois o Apache mantém aberto o identificador de arquivo para o log e continuará gravando no arquivo de log antigo, se você não o fizer. O envio de USR1 para o pai (reinicialização normal) deve fazer o truque.
Cite a partir de 2.2 docs:
On even a moderately busy server, the quantity of information stored in the log files is very large. The access log file typically grows 1 MB or more per 10,000 requests. It will consequently be necessary to periodically rotate the log files by moving or deleting the existing logs. This cannot be done while the server is running, because Apache will continue writing to the old log file as long as it holds the file open. Instead, the server must be restarted after the log files are moved or deleted so that it will open new log files.
By using a graceful restart, the server can be instructed to open new log files without losing any existing or pending connections from clients. However, in order to accomplish this, the server must continue to write to the old log files while it finishes serving old requests. It is therefore necessary to wait for some time after the restart before doing any processing on the log files. A typical scenario that simply rotates the logs and compresses the old logs to save space is:
mv access_log access_log.old
mv error_log error_log.old
apachectl graceful sleep 600
gzip access_log.old error_log.old
Another way to perform log rotation is using piped logs as discussed in the next section.