On my machine I can see the '/tf' topic being advertised even before I create a publisher in CoppeliaSim. And publishing to the topic (e.g.: pub=simROS.advertise('/tf','tf2_msgs/TFMessage'); simROS.publish(pub,{transforms={}})) works as expected.
The plugin does nothing special to prevent that.
Anyways, I don't think one is supposed to send raw TFMessages.
I've been able to narrow down the issue. It seems when I first start a simulation while a roscore is running it is able to publish to /tf with no problem. However, when I shutdown the roscore and re-launch as well as restart the simulation, I am no longer able to publish to /tf. I wasn't expecting this behavior as I have been able to subcribe/publish to topics after restarting ROS and the simulation.
I followed these steps:
1) Launch roscore
2) Launch coppeliaSim
3) Open online_post.ttt
4) Run simulation
5) Check rostopic list ('/tf' should appear)
6) Stop simulation
7) Shutdown roscore
8) Go to step 1) and repeat. '/tf' now doesn't appear as a rostopic while all the other topics being published from the simulation do.
You can't shutdown roscore. It must be running when a ROS node starts and for the entire lifetime of the node, so the same applies to CoppeliaSim, which is a ROS node.