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 (
    1609, 1611, 1595, 1594, 1606, 1605, 1604, 
    1598, 1597, 1596, 1613, 1614, 1602, 
    1607, 1610, 1601, 1599, 1608, 1612, 
    1603, 1600
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00045

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "22.06"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 21,
            "rows_produced_per_join": 21,
            "filtered": "100.00",
            "index_condition": "(`cscartdevel`.`cscart_products_categories`.`product_id` in (1609,1611,1595,1594,1606,1605,1604,1598,1597,1596,1613,1614,1602,1607,1610,1601,1599,1608,1612,1603,1600))",
            "cost_info": {
              "read_cost": "12.61",
              "eval_cost": "2.10",
              "prefix_cost": "14.71",
              "data_read_per_join": "336"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ]
          }
        },
        {
          "table": {
            "table_name": "cscart_categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "cscartdevel.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 1,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "5.25",
              "eval_cost": "0.11",
              "prefix_cost": "22.06",
              "data_read_per_join": "3K"
            },
            "used_columns": [
              "category_id",
              "storefront_id",
              "usergroup_ids",
              "status"
            ],
            "attached_condition": "((`cscartdevel`.`cscart_categories`.`storefront_id` in (0,1)) and ((`cscartdevel`.`cscart_categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`cscartdevel`.`cscart_categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`cscartdevel`.`cscart_categories`.`usergroup_ids`))) and (`cscartdevel`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
1594 406M
1595 406M
1596 407M
1597 407M
1598 407M
1599 406M
1600 406M
1601 406M
1602 406M
1603 406M
1604 406M
1605 406M
1606 406M
1607 313M
1608 406M
1609 406M
1610 331M
1611 331M
1612 331M
1613 407M
1614 407M