その文法が曖昧だから最長一致してるだけ
sepByで区切られる個々のフィールドに区切り文字が出現すること自体は普通にある

> parseTest ((char '(' *> many (oneOf "abcdefgh,") <* char ')') `sepBy` char ',') "(abc,def),(gh)"
["abc,def","gh"]