It's not really a sub-boundary but rather that an multipart section can itself contain multipart content.
This means that you'll have to recursively parse the boundaries, and if the content type is multipart/alternative then it will contain it's own boundary string and parts. The fact that this string is very similar to the other boundary is just outlook's doing. It could have been completely separate.
both
--part
--part
--part
and
--part
--part
--part
--part
--part
are valid structures.
It might be more obvious if outlook made it looks like
Content-Type: multipart/alternative;
boundary="firstmessage"
--firstmessage
content-type: multipart/alternative;
boundary="nestedpart"
--nestedpart
content-type: text/plain
nested body one
--nestedpart
content-type: text/plain
nested body two
--nestedpart--
--firstmessage
headers
second part of first message
--firstmessage--