> Does such an array exist?  If not, would it be possible to modify the split  method to  produce that  result?

If you put the pattern in a group, it will be included in the array --
but not quite in the way you described:

irb(main):001:0> p "This is a sentence. This is a sentence! This is a
sentence?".strip.split(/(\.|\?|\!)/)
["This is a sentence", ".", " This is a sentence", "!", " This is a
sentence", "?"]

Regards,
Thomas.