The data has to be allocated somewhere, and on the stack is simply not acceptable. So there can be no size penalty.

Yes, the text size of the binary is slightly bigger, because a "static const" ends up in the ro-section, but that's _purely_ an accounting thing. It has to be somewhere, be it .text, .data or .bss. Who would ever care where it is?

Having it in .ro means that there are no initialization issues, and a compressed kernel compresses the zero bytes better than having init-time code to initialize the array (or, worse, doing it over and over at run-time).