Probably because your program needs environment variables that cron does not have set. You need to wrap your job in a script that sets and exports whatever variables it needs- likely TERM and PATH at least.
Using "at" works because at grabs all your current environment settings and uses them when it runs the job. See Cron is not working for a more complete discussion.
For more details of cron itself, see Cron, Batch and At and UNIX Basics: JOB SCHEDULING.
Some systems are replacing cron (and init and everything else that is part of historical Unix). You may also want to read Ding, dong, the Cron is dead for Mac OS X.
Phone: 707-SCO-UNIX (707-726-8649) Toll Free: 833-SCO-UNIX (833-726-8649)