Commenting here as a previous user of Fluentd - just to be clear, this isn't any official stance on the question, just my personal take having used both Fluentd and Logstash for several years.
In my experience, the biggest differences you'll find stem from the difference between running in the JVM or not.
First, the JVM lets you get good parallelism (see: the
workers parameter in several output plugins), Fluentd has the
multiprocess plugin, which I've used quite a bit, but it's a bit of a workaround (you have to pipe between processes if you want to parallelize the pipeline, which is pretty manual and makes debugging difficult.)
The JVM obviously incurs overhead, and you need to be aware of heap space, etc. This can be a blessing or a curse - for example, you may get annoyed by having to set the heap space, but may wish you could when fluentd's memory footprint balloons because of queued messages.
Last time I used fluentd, I was mostly writing regex parsers for logs, so I didn't have the benefit of grok, which I think there's a fluentd plugin for now. I ended up with truly horrifying regexes to parse messages without grok, and coupled with how grok has been integrated from the beginning in logstash and has been tuned for performance a lot recently, having a fast, mature grok parser available is awesome.
Fluentd's file buffer plugin is very useful to add some resiliency to your log pipeline. In Logstash you may need to add something like redis to address backpressure.
I'm completely spitballing here, but I would guess performance would be better in the JVM, but I would strongly encourage you to just try some benchmarks, because use cases can vary quite a bit. For example, you may be grok/parse-heavy which maybe faster in one or another, or may find your input method may vary from one to another (whether you're getting messages from files, syslog, etc.)