Причин тут можно придумать много и среди них, мне не удалось придумать ни одной технической. То есть какого-то принципиального ограничения нет. Кстати, в некоторых языках границы среза можно задавать как “включая”, так и “не включая”
[a:b] # include reft & right borders
(a:b] # include right border
[a:b) # include left border
Во-первых, синтаксис не включающий правую границу интуитивно понятнее
вы не задумываясь понимаете, что в срез попадут два элемента 5-3=2. Если бы правая граница включалась, элементов в срезе было бы три, что контринтуитивно.
Во-вторых, если не включать левую границу, то чтобы получить срез включающий нулевой элемент, мы должны были бы использовать отрицательные индексы.
Но отрицательные индексы уже используются для указания отсчета с конца.
В-третьих, вы сами же выше и показали полезный юз-кейс
это интуитивно понятно, а что бы мы получили, если бы границы включались по-другому?