The relevant entry in the file t1phv.fd
says
\DeclareFontShape{T1}{phv}{m}{sc}{
<-> \Hv@@scale phvrc8t
}{}
meaning that phvrc8t.tfm
and, if existent, phvrc8t.vf
will be used for sans serif small caps. The file phvrc8t.vf
exists and its translation into human readable form with vftovp
says
(VTITLE )
(FAMILY UNSPECIFIED)
(FACE F MRR)
(CODINGSCHEME EXTENDED TEX FONT ENCODING - LATIN)
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
(CHECKSUM O 4303237440)
(FONTDIMEN
(SLANT R 0.0)
(SPACE R 0.27799)
(STRETCH R 0.165991)
(SHRINK R 0.065991)
(XHEIGHT R 0.522998)
(QUAD R 1.0)
(EXTRASPACE R 0.065991)
(PARAMETER D 8 R 0.717993)
(PARAMETER D 9 R 0.717993)
(PARAMETER D 10 R 0.930994)
(PARAMETER D 11 R 0.2199955)
(PARAMETER D 12 R 0.930994)
(PARAMETER D 13 R 0.225)
(PARAMETER D 14 R 0.555994)
(PARAMETER D 15 R 0.0)
(PARAMETER D 16 R 1.2)
)
(MAPFONT D 0
(FONTNAME phvr8r)
(FONTCHECKSUM O 13550061316)
(FONTAT R 0.8)
(FONTDSIZE R 10.0)
)
(MAPFONT D 1
(FONTNAME phvr8r)
(FONTCHECKSUM O 13550061316)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
<...lines omitted...>
(CHARACTER C A
(CHARWD R 0.716992)
(CHARHT R 0.720496)
(MAP
(MOVERIGHT R 0.025)
(SELECTFONT D 1)
(SETCHAR C A)
(MOVERIGHT R 0.025)
)
)
<...lines omitted...>
(CHARACTER C a
(CHARWD R 0.582996)
(CHARHT R 0.581494)
(MAP
(MOVERIGHT R 0.025)
(SETCHAR C A)
(MOVERIGHT R 0.025)
)
)
<...lines omitted...>
meaning that the character "a" is obtained as a scaled version of the upper case "A". Notice the difference: for the "A" the selected font is number 1, that is, phvr8r
at design size, for the "a" the selected font is number 0 (the default), that is, phvr8r
at 0.8 the design size.
So the answer is: Helvetica uses faked small caps.
Typewriter type small caps are something that I don't even consider.