the_content is a queue every plugin joins, and priority decides the outcome. A shortcode that renders as text, a paragraph tag wrapped around a block element, and an oEmbed that stopped embedding are all the same problem.
// core, for orientation
// 8 run_shortcode
// 10 wpautop
// 10 wptexturize
// 11 do_shortcode
// 16 convert_smilies
add_filter( 'the_content', 'shop_wrap_tables', 12 ); // after shortcodes expand
A filter needing the raw stored content must run below 8; one needing finished HTML must run above 11. Returning anything other than a string breaks every filter after yours, which presents as an unrelated plugin failing. When two plugins genuinely conflict, moving one with remove_filter and re-adding it at a different priority is the blunt instrument that works.