Query table based on column value
You can try to create a view that gathers data from both tables. Example:

create view v_bzo as
select poi_list.id, poi_list.nr, "GESBZO".geom
from poi_list
join "GESBZO" 
on source_id = "XIDENTYFIK1" 
where source_layer='"EGiB"."GESBZO"';
--
create view v_dzi as
select poi_list.id, poi_list.nr, "GESDZI".geom
from poi_list
join "GESDZI" 
on source_id  = "ID" 
where source_layer='"EGiB"."GESDZI"';
--
create view poi_geoms
as 
select * from v_bzo
union
select * from v_dzi; 


With test data (without postGIS):

select * from poi_list;
 id |  nr  |  source_layer   | source_column |     source_id      
----+------+-----------------+---------------+--------------------
  1 | 523A | "EGiB"."GESBZO" | "XIDENTYFIK1" | 152000300000052278
  2 | 658h | "EGiB"."GESBZO" | "XIDENTYFIK1" | 152000300000050514
 50 | 694S | "EGiB"."GESDZI" | "ID"          | 152000300000048731
 50 | 223C | "EGiB"."GESDZI" | "ID"          | 152000300000051678
(4 rows)

select * from "GESBZO";
 id | FNB_N |            IG5            |    XIDENTYFIK1     |      geom       
----+-------+---------------------------+--------------------+-----------------
  1 | g     | 300207_5.0001.869/1.1_BUD | 152000300000052278 | 010600002080080
  2 | b     | 300207_5.0001.68/2.1_BUD  | 152000300000050514 | 010600002080080
(2 rows)

select * from "GESDZI";
 id |         IG5         |         ID         |      geom       
----+---------------------+--------------------+-----------------
  1 | 300207_5.0001.411   | 152000300000048731 | 010600002080080
  2 | 300207_5.0001.410/2 | 152000300000051678 | 010600002080080
(2 rows)

select * from poi_geoms order by id;
 id |  nr  |      geom       
----+------+-----------------
  1 | 523A | 010600002080080
  2 | 658h | 010600002080080
 50 | 223C | 010600002080080
 50 | 694S | 010600002080080
(4 rows)