Clear["Global`*"];
Using @bmf' s definition for the partitioning
applyDistributed[func_, x_] :=
Module[{list = List @@ x, func2 = Head@x},
func2 @@@ Apply[func, Internal`PartitionRagged[list, #] & /@
Apply[Join, Permutations /@
IntegerPartitions[Length[list]]], {2}]]
applyDistributed[F, a . b . c]
(* {F[a, b, c], F[a, b] . F[c], F[a] . F[b, c], F[a] . F[b] . F[c]} *)
applyDistributed[F, a*b*c]
(* {F[a, b, c], F[c] F[a, b], F[a] F[b, c], F[a] F[b] F[c]} *)
applyDistributed[F, a + b + c]
(* {F[a, b, c], F[c] + F[a, b], F[a] + F[b, c], F[a] + F[b] + F[c]} *)
applyDistributed[F, a . b . c . d]
(* {F[a, b, c, d], F[a, b, c] . F[d], F[a] . F[b, c, d], F[a, b] . F[c, d],
F[a, b] . F[c] . F[d], F[a] . F[b, c] . F[d], F[a] . F[b] . F[c, d],
F[a] . F[b] . F[c] . F[d]} *)