I just wanted to post an update on my work..
I did some more testing with the SyncJE Blackberry client against the Zimbra connector. I was able to get calendars to sync one-way to the Blackberry, but at the end of the sync process, a null-pointer exception is thrown on the server (outside of the Zimbra connector) and the sync status is lost.
I've concluded that it's a waste of time continuing to work against the 2-year old Sync4J server. Better to port to the Funambol v6 server and get it working there. I understand enough about the internals now (I think), that I can probably move the important bits into a v6 module. The SOGo team have produced a very compact, lightweight Funambol connector for their server, so I plan on using that as a framework moving forward.
However, I'm still not a Java developer, so I'll be getting some mentoring help from some of my colleagues who are developers. As such, I probably won't be able to produce anything more for a few weeks. I've put my latest version of the connector up at the same URL --
http://www.sfu.ca/~hillman/ZimbraSync4j.tar.gz