It's because when alfresco first starts up, it starts some logging before it even reads custom-log4j.properties. So those go where tomcat thinks is the current working directory. once tomcat has loaded up custom-log4j.properties and read/applied the location from there, it starts logging to that new location.
Not much you can do about it unless you're willing to unpack your war file, edit the location in log4j.properties and repack the war file. or build from source, I guess. I don't worry about the initial log entries myself.
When I'm running from the bundle, I usually just edit alfresco.sh. where it says:
INSTALLDIR=/opt/alfresco-[version]
I add a line under it:
cd ${INSTALLDIR}/tomcat/logs
that way, the initial logs will go there. I have custom-log4j.properties also send the logs to the same directory.
That also helps with solr.log and share.log (which you can't redirect with entries in tomcat/shared/classes/alfresco/…