Short answer
You should remove "so". Removing "because" is also possible but not recommended.
You can read more details below.
Conjunctions: 'so' and 'because'
So and because are both conjunctions, and both can be used to join two clauses together: a reason/cause clause with a result/consequence clause. Basically, these two patterns are equivalent:
[Cause], so [consequence].
Because [cause], [consequence].
However, so and because work a little differently. So works as a coordinating conjunction to join two independent clauses. Because works as a subordinating conjunction to join a subordinate clause (or a dependent clause) to the main clause.
For example, consider these two sentences:
They had a test. They studied hard.
We can join them with so. (Using so this way, you can read "so" as "it follows that". The result sentence is a compound sentence.)
They had a test, so they studied hard.
We can also join them with because. (The result sentence is a complex sentence.)
They studied hard because they had a test.
Because they had a test, they studied hard.
One subtle difference between the two is that because puts more emphasis on the reason, while so puts more emphasis on the consequence. Also, in a complex sentence, we can delete subordinate clauses without losing the main idea of the sentence because the main clause is still there. For example, They studied hard because they had a test.
How to fix the sentence
Ducks, geese, and swans are different types of waterfowl, but because they are similar in behavior and physical characteristics, so they comprise a single bird family.
This sentence has three clauses:
a) Ducks, geese, and swans are different types of waterfowl.
b) They are similar in behavior and physical characteristics.
c) They comprise a single bird family.
Using both because and so in the same sentence is considered incorrect. You can see the reason why clearly if we try to remove the subordinate clause. (Remember that a complex sentence will still make sense after having any subordinate clauses removed.)
*Ducks, geese, and swans are different types of waterfowl, but because they are similar in behavior and physical characteristics, so they comprise a single bird family.
* denotes an incorrect usage
The sentence doesn't make sense anymore, and that is exactly why using both because and so in the same sentence is considered incorrect.
To fix that, we have two choices: remove either because or so. Both work fine, though I prefer removing so (and keeping because).
d) Ducks, geese, and swans are different types of waterfowl, but because they are similar in behavior and physical characteristics, they comprise a single bird family.
f) Ducks, geese, and swans are different types of waterfowl, but they are similar in behavior and physical characteristics, so they comprise a single bird family.
(d) is correct. (f) is acceptable, but less preferred. The reason is that (f) contains three independent clauses. (f) has the structure [A, but B, so C]. This is perfectly fine in my opinion; however, because most compound sentences have only two independent clauses, some people might read a sentence having more than two independent clauses, (f) for example, as a run-on sentence.
References