SELECT 
  products_categories.product_id, 
  GROUP_CONCAT(
    IF(
      products_categories.link_type = "M", 
      CONCAT(
        products_categories.category_id, 
        "M"
      ), 
      products_categories.category_id
    )
  ) AS category_ids 
FROM 
  products_categories 
  INNER JOIN categories ON categories.category_id = products_categories.category_id 
  AND categories.storefront_id IN (0, 1) 
  AND (
    categories.usergroup_ids = '' 
    OR FIND_IN_SET(0, categories.usergroup_ids) 
    OR FIND_IN_SET(1, categories.usergroup_ids)
  ) 
  AND categories.status IN ('A', 'H') 
WHERE 
  products_categories.product_id IN (
    238484, 238460, 238462, 238477, 238490, 
    238447, 238489, 238485, 238443, 238495, 
    238448, 238442, 238438, 238493, 238454, 
    238488, 238449, 238441, 238480, 238458, 
    238482, 238483, 238439, 238464
  ) 
GROUP BY 
  products_categories.product_id

Query time 0.00135

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "51.47"
    },
    "grouping_operation": {
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "products_categories",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "link_type",
              "pt"
            ],
            "key": "pt",
            "used_key_parts": [
              "product_id"
            ],
            "key_length": "3",
            "rows_examined_per_scan": 93,
            "rows_produced_per_join": 93,
            "filtered": "100.00",
            "using_index": true,
            "cost_info": {
              "read_cost": "9.62",
              "eval_cost": "9.30",
              "prefix_cost": "18.92",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "product_id",
              "category_id",
              "link_type"
            ],
            "attached_condition": "(`goimagine`.`products_categories`.`product_id` in (238484,238460,238462,238477,238490,238447,238489,238485,238443,238495,238448,238442,238438,238493,238454,238488,238449,238441,238480,238458,238482,238483,238439,238464))"
          }
        },
        {
          "table": {
            "table_name": "categories",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY",
              "c_status",
              "p_category_id"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "category_id"
            ],
            "key_length": "3",
            "ref": [
              "goimagine.products_categories.category_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 4,
            "filtered": "5.00",
            "cost_info": {
              "read_cost": "23.25",
              "eval_cost": "0.47",
              "prefix_cost": "51.47",
              "data_read_per_join": "12K"
            },
            "used_columns": [
              "category_id",
              "usergroup_ids",
              "status",
              "storefront_id"
            ],
            "attached_condition": "((`goimagine`.`categories`.`storefront_id` in (0,1)) and ((`goimagine`.`categories`.`usergroup_ids` = '') or (0 <> find_in_set(0,`goimagine`.`categories`.`usergroup_ids`)) or (0 <> find_in_set(1,`goimagine`.`categories`.`usergroup_ids`))) and (`goimagine`.`categories`.`status` in ('A','H')))"
          }
        }
      ]
    }
  }
}

Result

product_id category_ids
238438 267,16543,2566M
238439 291,16556,2566M
238441 291,16556,2566M
238442 291,16556,2566M
238443 291,16556,2566M
238447 77,16544,16549,16558,2566M
238448 262,16545,16549,16555,16559,2566M
238449 114,16548,16550,16558,2566M
238454 262,16545,16555,16559,2566M
238458 16556,2566M
238460 262,16545,16555,16559,2566M
238462 262,16545,16555,16559,2566M
238464 291,16556,2566M
238477 288,16550,16558,2566M
238480 323,16548,16558,2566M
238482 16547,16550,16558,2566M
238483 262,16544,16545,16555,2566M
238484 77,16544,16558,2566M
238485 291,16551,16559,2566M
238488 291,16551,2566M
238489 291,16552,2566M
238490 77,16544,16558,2566M
238493 291,16551,2566M
238495 26,16549,16558,2566M