Here is why: there is a bit of high-level code optimisation going on here.
When the method runs the very first time, it creates the array, fills it with thirty odd numbers, and returns it. Next time around, it will simply return the same array without having to recompute the numbers (Since the array is static, it is be kept alive as long as the program containing this piece of code is alive.)
You could write this piece of code without making the array static, but then each time the method is invoked it will make a fresh start: create the array, fill it with the same numbers, and return it. But this is just a waste of energy! So it makes sense to use a static array.
I am sure the BNR book will explain this, it may be in some other chapter.