"Will I have to hand code this every time I want to have an "Add to Cart" button on a page where the recordset is filtered on a form post?"
yes, if the page uses a form post to load initially, you will need to maintain that form variable by adding it to the cart form
"Can eCart only deal with recordsets that are filtered by querystring?"
It's not a matter of eCart only dealing with record sets that use a query string, it's a matter of persisting the data used to filter the recordset.
eCart will automatically persist the query string for you, if you use a different method, than you will need to add custom code to account for it.
The reality is that when using a master detail page set, the normal procedure is to use a query string.