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 (
    38523, 44625, 44623, 44622, 44621, 44620, 
    44619, 31996, 40662, 40658, 44618, 
    44617, 31249, 44615, 44614
  ) 
GROUP BY 
  cscart_products_categories.product_id

Query time 0.00070

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "132.01"
    },
    "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": 45,
            "rows_produced_per_join": 45,
            "filtered": "100.00",
            "index_condition": "(`ea201_diorama`.`cscart_products_categories`.`product_id` in (38523,44625,44623,44622,44621,44620,44619,31996,40662,40658,44618,44617,31249,44615,44614))",
            "cost_info": {
              "read_cost": "69.01",
              "eval_cost": "9.00",
              "prefix_cost": "78.01",
              "data_read_per_join": "720"
            },
            "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": [
              "ea201_diorama.cscart_products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 2,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "45.00",
              "eval_cost": "0.45",
              "prefix_cost": "132.01",
              "data_read_per_join": "5K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`ea201_diorama`.`cscart_categories`.`storefront_id` in (0,1)) and ((`ea201_diorama`.`cscart_categories`.`usergroup_ids` = '') or find_in_set(0,`ea201_diorama`.`cscart_categories`.`usergroup_ids`) or find_in_set(1,`ea201_diorama`.`cscart_categories`.`usergroup_ids`)) and (`ea201_diorama`.`cscart_categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
31249 180,179,177M
31996 180,179,177M
38523 415,269,177,412M
40658 403M
40662 403M
44614 179,180,177M
44615 180,179,177M
44617 196,194M
44618 221,177M
44619 626,398M
44620 626,398M
44621 626,398M
44622 626,398M
44623 269,544,668M
44625 540,202,494,194,185M