As suggested in @mkennedy's comment pyproj is using no offsets (towgs84=0,0,0) in the transformation between NAD83 and WGS84.
p1 = Proj(init='epsg:4269')
print(p1.definition)
'proj=longlat datum=NAD83 no_defs ellps=GRS80 towgs84=0,0,0'
As also suggested in @mkennedy's comment, you might have to create the Proj object with a proj.4 string that includes +towgs84 and parameters rather than using the WKIDs.
From @mkennedy's answer to the question "PROJ4 / PostGIS transformations between WGS84 and NAD83 transformations in Alaska" I derived the following:
from pyproj import Proj, transform
p2 = Proj(init='epsg:4326')
no offsets
p1 = Proj(init='epsg:4269')
method: coordinate frame
p1cf = Proj(proj='latlong', ellps='GRS80', datum='NAD83', towgs84='-0.9956,1.9013,0.5215,-0.025915,-0.009426,-0.0011599,-0.00062')
method: position vector
p1pv = Proj(proj='latlong', ellps='GRS80', datum='NAD83', towgs84='-0.9956,1.9013,0.5215,0.025915,0.009426,0.0011599,-0.00062')
print(transform(p1, p2 , -80.00001, 40.00001))
print(transform(p1cf, p2 , -80.00001, 40.00001))
print(transform(p1pv, p2 , -80.00001, 40.00001))
Output:
(-80.00001, 40.00001)
(-80.00001904501643, 40.00003299028925)
(-80.00001618601023, 40.00001788467985)