Yes it's exactly the same result for both.
The first uses your PB 16bits array directly, is elegant if it works.
Have a look on (root)/trunk/apps/processing/midibox_cv_v2/src/mbcv_file_b.cpp , you will find this line:
status |= FILE_ReadBuffer((u8 *)patch_buffer, 2*CV_PATCH_SIZE);
where patch_buffer is declared as an array of u16, you can see that the length is multiplied by two(sizeof will do it for you);
...
The second uses temporary and local u8 array PB8 (512 bytes size), must be slower and is ugly ;)
For this last you have to define STEP_NUM:
#define STEP_NUM 256
or replace it by 256 ;)