It seems as though st_polygon does not check this. For now only implements a basic check for disjoint regions using st_within()
st_check_polygon(sfg)LOGICAL; TRUE if the sfg holes are entirely inside the outer ring, and
are disjoint, otherwise FALSE. When FALSE, the attribute Message is set
to a character vector describing the detected reasons.
A POLYGON sfg object