I think the intermediate result from @v1 / @v2 is being truncated because you're using smallmoney data type.
Can you use a different datatype, or cast one value to decimal to make it clearer what's happening.
e.g.
select round((CAST(@v1 as decimal(18,2)) / @v2 ) * @v3 ,2) --Statement 2
or
declare @v1 smallmoney = 1400.05,
@v2 smallmoney = 4232.33,
@v3 smallmoney = 4180.06
select round((CAST(@v1 as decimal(18,2)) / @v2 ) * @v3 ,2), --Statement 2
CAST(@v1 as decimal(18,2)) / @v2,
CAST(round((CAST(@v1 as decimal(18,2)) / @v2 ) * @v3 ,2) as SmallMoney) -- <----<<<