Yeah, one idea could be that we detect this in max_parallel_hazard_walker during the very first pass it performs on query-tree. Basically, in the SubLink node check, we can detect whether the subselect has Limit/Offset clause and if so, then we can treat it as parallel_unsafe. I have tried that way and it prohibits the parallel plan for the reported queries. However, I think more analysis and verification is required to see if it can happen in any other related cases.
This seems broken as well:
create table qwr(a int not null, b int not null, c text not null); insert into qwr select i, i, (select prosrc from pg_proc where oid=11734) from generate_series(1, 128000) i; set parallel_setup_cost to 0; analyze qwr; select count(*) from qwr where (a, b) in (select a, row_number() over() from qwr);