The following solution formats large numbers -- positive integers, to be precise -- in "Indian style" (for lack of a better term). The solution, which provides a user macro called \indnum, relies on Lua's string library and hence must be compiled under LuaLaTeX.
This formatting method is compatible with the siunitx package in the sense that the solution actually relies on the \num macro to format numbers smaller than 100,000 -- oops, 1,00,000. However, the numbers cannot be employed directly in a column of type S. On the other hand, the argument of \indnum needn't be an explicit integer; it's fine to input something such as 2e8*4+20/4, as long as the argument evaluates to a number according to Lua's rules of syntax.
A side-remark: You claimed in a comment that "part of siunitx's functionality is number formatting". Speaking for myself, I actually strongly disagree with your claim -- and I'd immediately change it to "part of siunitx's functionality is number formatting according to recognized SI principles" [emphasis added]. The only such principle I know of is grouping in multiplicative increments of 1000. In my opinion, all other grouping methods -- including multiplicative increments of 100 for numbers greater than 999 -- are therefore not in the scope of what the siunitx package should be concerned with. Naturally, I will happily let Joseph Wright (the author and maintainer of the siunitx package) weigh in with his own opinion on this topic.
At any rate, I can't see why one couldn't use the r column type to typeset numbers formatted in the "Indian style". See the table below for an application.

% !TEX TS-program = lualatex
\documentclass{article} % or some other suitable document class
\usepackage[group-separator={,},
group-minimum-digits=4,
input-decimal-markers={.}]{siunitx}
\usepackage{luacode} % for "luacode" environment
\begin{luacode}
function indnum ( n )
local s, t
n = math.floor ( n ) -- retain integer part
if n<1e5 then -- invoke "\num" macro to format and print
tex.sprint ( "\\num{" .. n .. "}" )
else
s = string.reverse ( "" .. n ) -- convert to string & reverse
t = s:sub(1,3) .. "," .. s:sub(4,5) .. ","
s = s:sub(6) -- discard first 5 digits of 's' string
while #s > 2 do
t = t .. s:sub(1,2) .. ","
s = s:sub(3) -- discard first 2 digits of 's' string
end
t = t .. s -- last step: 's' contains 0, 1, or 2 digits
tex.sprint ( string.reverse ( t ) ) -- reverse order and print
end
end
\end{luacode}
\newcommand\indnum[1]{\directlua{ indnum(#1) }}
\begin{document}
\begin{tabular}{r l}
\indnum{500}\\
\indnum{5e4}\\
\indnum{1e5} & 1 lakh\\
\indnum{1e7} & 1 crore\\
\indnum{2e8*4+20/4}\\
\indnum{123456789e1}\\
\indnum{123456789e2}\\
\indnum{123456789e3}\\
\indnum{123456789e4}
\end{tabular}
\end{document}
S, i.e., to align the formatted numbers on their implicit or explicit decimal markers? Separately, does a solution have to be based on the machinery of thesiunitxpackage (as would appear to be implied by the title of your posting), or might a solution that works independently of thesiunitxpackage be acceptable? Please advise. – Mico Sep 12 '21 at 06:47Scolumn. In fact, if it was available right now, that's what I would be doing. And I'd like a solution integrated with the rest of thesiunitxmachinery (whatever that might be), Given that part ofsiunitx's functionality is number formatting, that seems like a reasonable prospective feature/enhancement. I don't know whether a solution independent of thesiunitxmachinery would be acceptable. But at any rate, it would need to coexist withsinuitx. – Faheem Mitha Sep 12 '21 at 09:02