OK, let's try a loop device, to see if e2fsck then can see the right physical size.
According to your mdadm dumps, the data on the raid array starts at 2048 sectors. A sector is 512 bytes, so it starts at 1048576 bytes. Using a loop device we can create a virtual disk, which starts at a relative posiiton on /dev/sda2.
First find out which loop devices are already in use:
When I remember well, the ZyXEL firmware has 1 loopdevice in use, so loop0 is unavailable. Assuming you can use loop1:
# stop the array
mdadm --stop /dev/md0
losetup -o 1048576 /dev/loop1 /dev/sda2