I implemented Thai name templates based on Moewe's Ethiopian ones (which don't seem to suffer from the same problem).
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[style=authoryear]{biblatex} % GOOD
% \usepackage[style=verbose]{biblatex} % BAD
% \usepackage[notes,backend=biber]{biblatex-chicago} % GOOD
\usepackage[style=american]{csquotes}
\DeclareSortingNamekeyTemplate[thai]{
\keypart{
\namepart{given}
}
\keypart{
\namepart{family}
}
}
\DeclareUniquenameTemplate[thai]{% Distinguish names (Man. 4.11.4)
\namepart[base=true]{given}
\namepart[disambiguation=full]{family}
}
\DeclareNamehashTemplate[thai]{
\namepart[hashscope=full]{given}
\namepart[hashscope=full]{family}
}
\DeclareNameAlias{sortname}{family-given} % Make sortname family-given (w/ Thai special case built-in)
\DeclareNameFormat{given-family}{%
\ifsortingnamekeytemplatename{thai}
{\usebibmacro{name:thai}
{\namepartgiven}
{\namepartprefix}
{\namepartfamily}}
{\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\DeclareNameFormat{family-given}{%
\ifsortingnamekeytemplatename{thai}
{\usebibmacro{name:thai}
{\namepartgiven}
{\namepartprefix}
{\namepartfamily}}
{\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\DeclareNameFormat{labelname}{%
\ifuniquenametemplatename{thai}
{\usebibmacro{labelname:thai}}
{\usebibmacro{labelname:western}}%
\usebibmacro{name:andothers}}
\newbibmacro{labelname:thai}{%
\iffieldequalstr{uniquepart}{base}
{\usebibmacro{name:thai}
{\namepartgiven}
{\empty}
{\empty}}
{\usebibmacro{name:thai}
{\namepartgiven}
{\namepartprefix}
{\namepartfamily}}}
\newbibmacro{labelname:western}{%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi}
\newbibmacro*{name:thai}[3]{%
\usebibmacro{name:delim}{#1#2#3}%
\usebibmacro{name:hook}{#1#2#3}%
\mkbibthgiven{#1}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibthfamily{#2}\isdot}%
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibthfamily{#3}\isdot}}
\let\mkbibthgiven\mkbibnamefamily
\let\mkbibthfamily\mkbibnamegiven
\begin{filecontents*}{\jobname.bib}
@book{Bunbongkarn:The_Military_in,
author = {given=Suchit, family=Bunbongkarn, nametemplates=thai},
title = {The Military in {Thai} Politics, 1981--86},
publisher = {Institute of Southeast Asian Studies},
location = {Singapore},
date = {1987},
}
@book{Morell:Political_Conflict_in,
author = {David Morell and given=Chai-anan, family=Samudavanija, nametemplates=thai},
title = {Political Conflict in {Thailand}},
subtitle = {Reform, Reaction, Revolution},
publisher = {Oelgeschlager, Gunn \& Hain},
location = {Cambridge, Mass.},
date = {1981},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\begin{itemize}
\item \citeauthor{knuth:ct:a} says \dots
\item \citeauthor{Bunbongkarn:The_Military_in} says \dots
\item \citeauthor{Morell:Political_Conflict_in} say \dots
\end{itemize}
\printbibliography
\end{document}
\citeauthor works properly with the authoryear style (and likewise the notes style of biblatex-chicago).
However, switching to the verbose style results in unwanted full Thai names.
How do I fix my implementation so as to make \citeauthor work properly with the verbose style as well?
Update The abovementioned Ethiopian implementation on which I modeled mine does in fact suffer from the same problem. Here's the result after switching to verbose.



