Use launchd para invocar seu script. Isso não abrirá o Terminal.
Para lançamentos periódicos, use StartInterval e StartCalendarInterval . man launchd.plist mostrará como fazer isso.
Como alternativa, você também tem cron no OS X.