Ah yes, I struggled with this for a few hours before I figured out what was going on…
The problem is the WordPress “fatal error” message and the PHP “fatal error” message aren’t referring to the same fatal error. What is happening is that there is a fatal error somewhere in your callback function (‘punbb_sync_tables’ in your case) and WordPress reports it with a simple “Plugin could not be activated because it triggered a fatal error” message. Then, as it deals with this, it seems that it re-loads the plugin page, causing your functions to be loaded a second time and generating a separate fatal error (the “Cannot redeclare function…” one.
If there is a bug here, it’s that WordPress handles this badly. If you can find the bug in your install function, it should be fine.