the issue has me really stumped. how/why would the output from perl
make it to /opt/syslog-ng/logs/logfile in "real-time" yet, the
output from python only make it to /opt/syslog-ng/logs/logfile as a
batch upon stopping the service!?!?

This sort of thing typically happens because the program is using buffered IO, and output is only flushed when the buffer is full.  If you were to leave things running for a while and generate a lot of log traffic, you would probably see the output show up periodically in large chunks.

 This thread on Stackoverflow discusses a variety of solutions to the problem:

  http://stackoverflow.com/questions/107705/python-output-buffering

The simplest is probably to run Python with the "-u" flag (or output to stderr instead of stdout).