This was first reported back in January of 2018 and it is still not fixed although the original bug report was closed.

The configuration property "hideHeaders" does not work if the grid is empty.

I have worked around it with the following override but it may not work in some situations:

Code:
onRender: function () {    
    this.callParent();
    const headerContainer = this.getHeaderContainer();
    if (this._hideHeaders) {
        headerContainer.el.setStyle({
            visibility: 'hidden'
    });
  }
}