SELECT 
  cscart_products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      cscart_products_categories.link_type = "M", 
      CONCAT(
        cscart_products_categories.category_id, 
        "M"
      ), 
      cscart_products_categories.category_id
    )
  ) AS category_ids 
FROM 
  cscart_products_categories 
  INNER JOIN cscart_categories ON cscart_categories.category_id = cscart_products_categories.category_id 
  AND cscart_categories.storefront_id IN (0, 1) 
  AND (
    cscart_categories.usergroup_ids = '' 
    OR FIND_IN_SET(
      0, cscart_categories.usergroup_ids
    ) 
    OR FIND_IN_SET(
      1, cscart_categories.usergroup_ids
    )
  ) 
  AND cscart_categories.status IN ('A', 'H') 
WHERE 
  cscart_products_categories.product_id IN (
    572, 571, 570, 569, 568, 578, 579, 580, 
    581, 582, 678, 679, 680, 833, 832, 841, 
    840, 839, 838, 837, 853, 852, 867, 866, 
    865, 864, 872, 871, 870, 869, 868, 874, 
    873, 878, 877, 876, 875
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00104

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "109.01"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "cost_info": {
        "sort_cost": "4.92"
      },
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "rows_examined_per_scan": 125,
            "rows_produced_per_join": 5,
            "filtered": "4.00",
            "cost_info": {
              "read_cost": "29.49",
              "eval_cost": "1.00",
              "prefix_cost": "30.49",
              "data_read_per_join": "20K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`cscart`.`cscart_categories`.`storefront_id` in (0,1)) and ((`cscart`.`cscart_categories`.`usergroup_ids` = '') or find_in_set(0,`cscart`.`cscart_categories`.`usergroup_ids`) or find_in_set(1,`cscart`.`cscart_categories`.`usergroup_ids`)) and (`cscart`.`cscart_categories`.`status` in ('A','H')))"
          }
        },
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "ref",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "cscart.cscart_categories.category_id"
            ],
            "rows_examined_per_scan": 12,
            "rows_produced_per_join": 4,
            "filtered": "8.20",
            "index_condition": "(`cscart`.`cscart_products_categories`.`product_id` in (572,571,570,569,568,578,579,580,581,582,678,679,680,833,832,841,840,839,838,837,853,852,867,866,865,864,872,871,870,869,868,874,873,878,877,876,875))",
            "cost_info": {
              "read_cost": "61.60",
              "eval_cost": "0.98",
              "prefix_cost": "104.09",
              "data_read_per_join": "78"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
568 388,300M
569 388,300M
570 300M,388
571 300M,388
572 300M,388
578 389,403,300M
579 389,403,300M
580 389,403,300M
581 389,403,300M
582 403,300M,389
678 303M,315,317
679 317,303M,315
680 317,303M,315
832 374M,301,366
833 374M,301,366
837 302,301,368M
838 302,301,368M
839 368M,302,301
840 301,368M,302
841 301,368M,302
852 301,369M,302
853 301,369M,302
864 302,301,369M
865 302,301,369M
866 301,369M,302
867 301,369M,302
868 301,369M,302
869 301,369M,302
870 302,301,369M
871 302,301,369M
872 369M,302,301
873 301,302,370M
874 370M,301,302
875 369M,301,302
876 302,369M,301
877 302,369M,301
878 302,369M,301