Everything would function the same if you change the set/get methods to do $this->data[$field], it just would mean that we don't have to add a variable for every column on every table and update it accordingly every time a new column is added/removed.

You would still want entity classes because functions can be added to it to make processing the data on it easier. For example, you might have a function here that returns the forum description prepared for display or edit (processes the bbcode)