Tall-Narrow and Flat-Wide are the two HBase table design approaches that can be used. However, which approach should be used when merely depends on what you want to achieve and how you want to use the data. The performance of HBase completely depends on the RowKey and hence on directly on how data is accessed.
On a high level, the major difference between flat-wide and tall-narrow approach is similar to the difference between get and scan. Full scans are costly in HBase because of ordered RowKey storage policy. Tall-narrow approach can be used when there is a complex RowKey so that focused scans can be performed on a logical group of entries.
Ideally, the tall-narrow approach is used when there are less number of rows and a large number of columns whereas flat-wide approach is used when there are less number of columns and a large number of rows.
Hope this helps