Or you could just skip the array completely and just use the pipeline. (From a piece of something I use regularly but modified you use your variables)
add-type -AssemblyName "Microsoft.SqlServer.Smo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$s= new-object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'LOCALHOST'
$fa = $s.Databases['FinancialAid']
$scrp = New-Object ("Microsoft.SqlServer.Management.Smo.Scripter")
$scrp.Server = $s
$options = New-Object ("Microsoft.SqlServer.Management.SMO.ScriptingOptions")
$options.IncludeHeaders = $true
$options.FileName = 'C:\temp\StoredProcedures.sql'
$options.AppendToFile = $true
$options.ToFileOnly = $true
$options.ScriptBatchTerminator = $true
$scrp.Options = $options
$fa.StoredProcedures | foreach {if ($_.IsSystemObject -eq $false) { $scrp.Script($_) }}