This looks like a job for look ahead. We'll find spaces followed by things which are not spaces.
split <- strsplit(x, " (?=[^ ]+$)", perl=TRUE)
matrix(unlist(split), ncol=2, byrow=TRUE)
[,1] [,2]
[1,] "This is a" "test"
[2,] "Testing 1,2,3" "Hello"
[3,] "Foo" "Bar"
[4,] "Random 214274(%*(^(*" "Sample"
[5,] "Some" "Hyphenated-Thing"