this doesnt read as a stratification issue to me, it sounds like you have explicit relationships between rows, not that you need to keep some proportions of relative values.
library(tidyverse)
(paired_df <- tibble(
id = 1:20,
choice_set = sort(rep(1:10,2)),
low_or_high = rep(0:1,10),
value = runif(20)
))
(choices<- unique(paired_df$choice_set))
(train_i <- sample(choices,
size = .8*length(choices), # 80 %
replace = FALSE))
(test_i <- setdiff(choices,train_i))
(train_df <- filter(paired_df,
choice_set %in% train_i))
(test_df <- filter(paired_df,
choice_set %in% test_i))