The parameter 236 (Soil temperature level 4) specifies that its top level is 100 cm and its bottom level is 289 cm so to encode this information in GRIB edition 1 (GRIB1) we would need to set the value of the key "bottomLevel" to 289 (octet 12 in section 1. See GRIB1 section 1 spec).

Note for this parameter, the key "indicatorOfTypeOfLevel" is 112 which means "Layer between two depths below land surface" (See Code Table 3).
In this case, we allocate octet  11 for the "topLevel" key and octet 12 for the "bottomLevel" key.

However since the bottomLevel key is only one octet it cannot accommodate a value larger than 255! Therefore it is not possible to encode levels larger than that value in GRIB1 so we simply set all the bits to 1 (which means MISSING).
Here is a snippet from grib_dump:

...
======================   SECTION_1 ( length=52, padding=0 )    ======================
1-3   section1Length = 52
4     table2Version = 128
5     centre = 98 [European Centre for Medium-Range Weather Forecasts (common/c-1.table) ]
6     generatingProcessIdentifier = 152
7     gridDefinition = 255
8     section1Flags = 128 [10000000 (grib1/1.table) ]
9     indicatorOfParameter = 236 [Soil temperature level 4  (K)  (grib1/2.98.128.table) ]
10    indicatorOfTypeOfLevel = 112 [Layer between two depths below land surface - depth of upper surface, depth of lower surface  (cm)  (grib1/local/ecmf/3.table , grib1/3.table) ]
11    topLevel = 100
12    bottomLevel = MISSING
...


GRIB edition 2 addresses this shortcoming.