It did seem very strange, when the pattern you gave me worked perfectly on everything else written in the same structure. Would it have anything to do with the fact it was extracted from a compressed archive (gzipped)?
The modified pattern works brilliantly, thank you for your help. 
I have just one more thing to ask. I slightly modified the pattern you initially posted:
preg_match_all('/-- Table structure for table .*?(?=-- Table structure for table |$)/si', $contents, $matches);
to this:
preg_match_all('/-- dumping data for table .*?(?=-- Table structure for table |$)/si', $contents, $matches);
...so that i could extract just the insert statements from the file. I think i understand it to say "match from the beginning of 'dumping data' and grab everything until you encounter 'table structure' comments". It worked perfectly, but i'm wondering how to incorporate this into the hex pattern?