By default, when a table/list has no records to display, its headers are still rendered. The first thing users think of in this scenario is to use Conditional Formatting/Binding, but they won't achieve the result they are looking for due to their scope. To work around this, they can utilize the NoDataMessage/NoDataStyle properties.
This is mentioned in ticket 1702784.