I do not see anything in the documentation to control this behavior.
For the case where there are a few exceptions, you can manually switch it off for the ones you want with the \num[scientific-notation=false]{}.
Alternatively, if you can define exactly when you want the exponent to be added you can redefine the behavior of \num based on its value. Below I have defined \num to apply scientific-notation=false if
-\Threshold <= number <= \Threshold
where \Threshold is a value you define. With \Threshold=0.09 you get the results in the New column below for the value given in the Num column:

Notes:
- In the question it is suggested to use a maximum exponent to determine if scientific notation is to be used. I am not sure that such a solution is viable in general. Perhaps a solution based on the number of digits might work. Once a better algorithm is determined, the macro
\IfLessThanOrEqual can be adjusted to suit.
Code:
Below I have adapted this solution from how to test if a number is negative to define \IfLessThanOrEqual:
\documentclass{article}
\usepackage{siunitx}
\usepackage{tikz}
\sisetup{scientific-notation = engineering}
\newcommand*{\Threshold}{0.09}%
\newcommand\IfLessThanOrEqual[4]{%
\begingroup%
\pgfmathsetmacro{\var}{abs(#1)-#2}%
\pgfmathparse{ifthenelse(\var<=0,1,0)}%
\ifdim\pgfmathresult pt= 1 pt%
#3%
\else%
#4%
\fi%
\endgroup%
}%
\let\OldNum\num%
\renewcommand*{\num}[2][]{%
\IfLessThanOrEqual{#2}{\Threshold}{%
\OldNum[scientific-notation=false,#1]{#2}%
}{%
\OldNum[#1]{#2}%
}%
}%
\begin{document}
\newcommand{\Row}[1]{#1 & \OldNum{#1} & \num{#1}}%
\begin{tabular}{l l l}
Num & Old & New\
\Row{0.01}\
\Row{0.09}\
\Row{0.091}\
\end{tabular}
\end{document}