A Bloom filter uses a hash function to test membership in a given set $S$, by checking if an item is present of not at the specified position.
To mitigate the effect of hash collision, multiple functions are used, yielding probabilistic bound if using universal hash.
We can use 10 bits per elements to have 'reasonable' error rate.
If we could directly build a perfect hash function for the set $S + \infty$, where the last element is one not present in $S$, then we could use only 1 bit per element and have perfect recovery.
What are the fundamental reasons why this reasoning is wrong ?