'This limit applies to the size of each array, not the total size of all MATLAB arrays.'
That setting is only really of use related to creation of a single array. If you are doing any kind of calculation on your data you will usually end up with some number of intermediate results and one or more end results, which may be of the same size as the initial array or similar size.
When I have had issues of working with large data I have had to work out how many intermediate results I create and what size they are and make a rough calculation of the amount of memory that is used, then add an extra factor to allow for me miscalculating or just generally allowing breathing space and then I use this to determine the largest size of input data I can deal with at any one time.
I'm not aware of an easy panacea method for just always ensuring that any algorithm you run will behave itself with memory allocation for all its intermediate results. It needs to be carefully tuned for individual algorithms from my experience. Obviously for some algorithms the calculation is easy, for others it is a little more complicated, especially if you use the parallel pool with data being transferred to all the workers too.