When the @json_errors decorator was removed, to be replaced with APIHandler.write_error (see #2853), the establishment of the reason field was not preserved. Since @json_errors set that field and some notebook clients depend on its presence, it should be set in the compatible replacement.
Please see Issue #2942 for the meandering details of how this conclusion came about.