Just my opinion, and I'm sure I'll get flamed for it... if you know you're going to encroach on the neighboring seat (lets define that as "can't put the armrest down"), you should pay for a 2nd seat. *IF* there are any unsold seats, you get that cost refunded.
Or basically let people book and pay for more than 1 seat. Yes, that could mean a couple pays for three seats and gets an entire row for themselves.
If a passenger "loses" part of seat because a "passenger of size" is encroaching on their space, an FA should be notified, they fill out a form (paper or electronic), and the person encroached on gets a refund for their ticket.
ETA: There would need to be someway to check in and board with multiple seats so the computer doesn't see "hey, this seat is empty, let's put a standby person there".