If an area is disconnected from the remaining road network, like here, GraphHopper either blocks or keeps it depending on its size. So if such an ‘island’ is large enough it will be kept and it is possible to route inside, even though there is no connection to the outside. This is exactly what we see here. This is controlled by the prepare.min_network_size area. The default is 200, which means that all areas with less than 200 edges (roads between junctions) will be blocked entirely and all that are larger remain routable. So if you increase this setting to a sufficiently large value your area will be blocked and the snapping should occur outside of the area.
If you check the import logs you should also find some information about how many disconnected areas were found, how large they were and how many were blocked.