I've been sitting with this problem for a while, and the second I posted a question I figured it out :)
a=sprintf('\n') % a now equals a line feed
b=sprintf('\r') % b now equals a carriage return
Using these as delimiters directly solves my problem. So given my original sample code:
fid=fopen('text.txt', 'r+');
full=textscan(fid, '%s', 'Delimiter', sprintf('\r'));
fclose all;
% This reads in the text file, creating a new line at every carriage return
% and doing nothing when it sees a '\n' or '\r'