Edit: Having played with this problem a bit more, it appears it is impossible to add an alpha channel to a geoTIFF in Matlab (at least without some clever workaround) for a couple of reasons:
1: the 'Photometric' tag should be set to 'RGB', as the colour space we're creating is RGB+alpha. However there is an interlock in geotiffwrite which prevents you from writing anything other than an x*y*3 array when this tag is set to RGB. The code I utilised above (found somewhere online) gets round an error by using 'Separated' instead, but this is associated with the CMYK colour space so is surely not the right setting.
2: You set the 'ExtraSamples' tag to inform that something other than RGB data is expected. But in other examples I've seen, you also have to set the 'SamplesPerPixel' tag to 4 to reflect this. Geotiffwrite does not recognise this as a valid tag. In fact, diving into the geotiffwrite code and looking at the tags which are valid, there are only a fraction of the options available compared to the tiff() command.
I would love to be proved wrong but it appears that I'm going to have to manually load hundreds of files in an external package and change white areas to transparent!