These are good reasons why iswitchb should not be default behaviour to
replace C-x b. However I hope you have not found bugs in iswitchb.
To quote the top of the Commentary:
----------------------------------------------------------------------
;; As you type in a substring, the list of buffers currently matching
;; the substring is displayed as you type. The list is ordered so
;; that the most recent buffers visited come at the start of the list.
;; The buffer at the start of the list will be the one visited when
;; you press return. By typing more of the substring, the list is
----------------------------------------------------------------------
So, first off, the completions buffer is just showing you buffer names
matching the current substring you have typed.
Second, if you type
the full name of a buffer and hit return, usually (but not always, as
the *cvs*, *cvs<2>* example demonstrates) you should get the desired
buffer. Certainly it should not be a random buffer! If you still
find that, let me know as this is definitely a bug.