Why doesn't hook_preprocess_block() alter the block content?
There were two issues, in my case.  For one thing, I was using the wrong key.  I needed to use...

$variables['content']['body'][0]['#text'] 


...instead of...

$variables['elements']['content']['body'][0]['#text']


The other issue was that I had nothing saved in the body field, and in some cases setting a value for the body field in hook_preprocess_block() has no effect on output unless there is a value saved in the body field.  You must at least save some garbage characters to the field or else setting a value in hook_preprocess_block() will have no effect on the output.