If you give ə the category code 12(=other) instead of 11(=letter), then \ə will not be a control-word-token but will be a control-symbol-token. TeX does not remove spaces after control-symbol-tokens unless the name of the control-symbol-token is formed by a character whose category code is 10(space).
Same can be done with Ə.
Disadvantage: If the category code of ə/Ə is 12, then at the time of tokenizing characters of lines of the .tex-input-file TeX won't consider ə/Ə a character that can be part of the multiletter-name of a control-word-token unless the control-word-token is constructed via \csname..\endcsname or comes from expanding a macro that was defined prior to switching the category code of ə/Ə to 12 or comes from \the-expansion of a token-register whose content was assigned prior to switching the category code of ə/Ə to 12.
% Compile with lualatex
\documentclass[paper=7in:10in,DIV=calc,12pt]{scrbook}
\usepackage[inner=0.653in, outer=0.4in]{geometry}
\usepackage{pdfpages}
\newcommand\Ə{\char"04D8 }%<-space terminates the number of the char and gets discarded
\newcommand\ə{\char"04D9 }%<-space terminates the number of the char and gets discarded
\catcode\Ə=12 \catcode\ə=12
\usepackage[none]{hyphenat}
\usepackage{fontspec}
\setmainfont[Ligatures={TeX,NoCommon}]{CMU Serif}
\setsansfont[Ligatures={TeX,NoCommon}]{CMU Sans Serif}
\begin{document}
\ə h\ə rfinin sonundakı boşluğu görmür.
\əh\ərfinin sonundakı boşluğu görmür.
\end{document}

Alternatively define \Ə/ \ə to be macros that are delimited by an explicit non-category-11(letter)-and-non-category-10(space)-character-token so that
- the non-category-11(letter)-character won't be considered part of the name of a control-word-token that begins with
\Ə.../ \ə....
- a space trailing the delimiting non-category-10(space)-character-token won't be discarded as after tokenizing the delimiting non-category-10(space)-character-token TeX's reading-apparatus will be in state M(middle of line) instead of S(skipping blanks).
You can, e.g., use ! as delimiter:
% Compile with lualatex
\documentclass[paper=7in:10in,DIV=calc,12pt]{scrbook}
\usepackage[inner=0.653in, outer=0.4in]{geometry}
\usepackage{pdfpages}
\makeatletter
@ifdefinable\Ə{\def\Ə!{\char"04D8 }}%<-space terminates the number of the char and gets discarded
@ifdefinable\ə{\def\ə!{\char"04D9 }}%<-space terminates the number of the char and gets discarded
\makeatother
\usepackage[none]{hyphenat}
\usepackage{fontspec}
\setmainfont[Ligatures={TeX,NoCommon}]{CMU Serif}
\setsansfont[Ligatures={TeX,NoCommon}]{CMU Sans Serif}
\begin{document}
\ə! h\ə! rfinin sonundakı boşluğu görmür.
\ə!h\ə!rfinin sonundakı boşluğu görmür.
\end{document}

\@ifnextchar is not suitable for checking whether the next token in the token-stream is a space-token.
Reasons:
- The implementation of the
\@ifnextchar-mechanism contains a lot of trickery for ensuring that TeX "looks" at the next non-space-token.
\@ifnextchar is implemented to fail if its first argument is a space-token:
\@ifnextchar is defined as follows:
\long\def\@ifnextchar#1#2#3{%
\let\reserved@d=#1\def\reserved@a{#2}\def\reserved@b{#3}\futurelet\@let@token\@ifnch
}%
In case #1 is a space-token, you have
\let\reserved@d=⟨space-token⟩\def\reserved@a{#2}...
According to the syntax-rules for \let a space-token behind = will be discarded, thus this is the same as
\let\reserved@d=\def\reserved@a{#2}...
, i.e., \reserved@d will have the meaning of the \def-primitive and \reserved@a and subsequent {#2} will be carried out instead of defining \reserved@a to yield #2.
Subsequent erroneous behavior depending on the current definition/meaning of \reserved@a follows.
\. – user202729 Dec 06 '21 at 02:35Əa letter so it's not really possible to specify something like\Əa(it's also possible to change the charcode to other and do that, but that seems to be even more problematic) – user202729 Dec 06 '21 at 02:56\ə, because the inputə hə rfinin sonundakı boşluğu görmürproduces the expected result. – egreg Dec 08 '21 at 10:17