Şöyle çözebilrsiniz, preg split ile img taglarından ayırdım, ilk eleman boş geldiği için splice ettim, 2 li gruplara ayırıp 0 a 'img' 1 e 'html' dedim.
$data = preg_split('/(<img .*>)/i', $source, -1,  PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
array_splice($data, 0, 1);

$mainData = array_chunk($data, 2);

foreach ($mainData as &$arr) {

    $arr['img']=$arr[0];
    unset($arr[0]);
    $arr['html']=$arr[1];
    unset($arr[1]);

}
print_r($mainData);