How can I get the last second of the last month as a default parameter value?
They key is the placement of DateValue() which:


  Returns a Date value containing the date information represented by a string, with the time information set to midnight (00:00:00). 


The problem with where you are removing seconds is inside the datevalue() function which is dropping the time portion. 

It is still important as you want time removed from the initial calculation for getting the last day of the month. 

A little shifting around get the desired output. 

=DateAdd(DateInterval.Second,-1,DateValue(DateAdd(DateInterval.Day,-(Day(Now)-1),Now)))


or

=DateAdd("s",-1,DateValue(DateAdd("d",-(Day(Now)-1),Now)))