If you look at the algorithm for generating new vertices and moving the old ones in Catmull-Clark subdivision, you can see that the first step is the creation of a 'Face-Point' at the average position of all the vertices of an existing polygonal face. That point then has a significant influence on the placing of newly-created edge vertices, and usually a less significant influence on the movement of existing vertices.
If you have a very large face, whose Face Point is miles away from the vertices being interpolated, and that face has concave inclusions, so the Face Point lies outside the face, there is nothing to stop the newly-created 'internal' vertices at the Face Points, being placed outside the polygons bounded by the (adjusted) existing vertices.
In the top pair of objects below, the quad dart has been subdivided once. The newly created Face Point vertex, not dividing an existing edge (white) has been placed outside the sickle shape bounded by the other points.
In the second pair, the dart has been cut up by hand, so its components are convex.The newly created vertices after one subdivision are all inside the areas bounded by the existing vertices.

As you can see, with respect to this problem, it doesn't matter that all the faces are quads - they will be after the first generation of subdivision anyway. The rule is: divide your concave faces into convex components - keep the Face Points internal to the edges that will be subdivided...

I. Then there will appear an edge loop around the border of the mesh and Ngon will remain in the middle on the flat area. This isn't a solution rather than a workaround in most cases (depending on the purpose of the mesh though) – Mr Zak Sep 12 '18 at 13:36