This lesson represents one of the many subjective decisions that gets made in a software project. This lesson could have been lesson 4 or 6 without changing the final product. Keep that in mind: there are many paths to the same end goal.
Some of this program looks much more complicated than it actually is: The byte array is just a 'drawing' of the character you create. Don't forget that lcd.write() is different than lcd.print() - those methods sound similar but have very different effects.