They often will appear to use contiguous memory - but don't count on it. These days memory fragmentation isn't as much of an issue (pretty much a non-issue really, especially on OSes with buddy-heap type memory managers) but you could conceivably create an array larger than your largest block of free memory.
So how is that different from C++? C++ programmers constantly rely on arrays being in blocks of contiguous memory, so why would BlitzMax be any more prone to creating an array larger than your largest block of free memory than C++ is?