My understanding agrees with yours: you need a WSDL to use the Web Service Task.
Using a Script Component Source (which I assume is what you meant?) is not what I would consider a hack. This is exactly the sort of thing it was designed to accommodate.