Hi John,
To be exact, the change was done in 15.7 Beta timeframe and the final implementation was available in 15.7 GA release.
This coincides with the in-row LOB changes for 15.7 and during this work, this loop was finally closed. Before the change, running datalength() on a null value would return null on all datatypes except text. The inrow LOB work cleaned up this last bit which is why you now see datalength() returning NULL for a NULL text value.
Dan